OSGI的大饼图

来源:百度文库 编辑:神马文学网 时间:2024/04/30 02:35:44
总结起来,OSGI的R4规范就是由Core Framework以及基于其上的各类Service组成的。Core Framework中主要包含四层部件,第一层就是运行时环境,这个就是JAVA的运行环境就OK了;第二层是Module层,Module其实就可以看成是插件吧,只不过说OSGI对于每个Module都有一个单独的类加载器来加载它;第三层就是典型的Module生命周期的管理,按照Module的生命周期进行状态的转换(哈哈,现在看到这种状态转换的例子,就开始想到状态模式了);第四层其实是服务层,为了解决Module之间的通信,那么设定了通过提供各自曝露自己的Service的方式。那么好,谁知道这些Service呢,OK,有了ServiceRegistration,那么这个对象知道所有的Service都从这里注册,那么就知道各个对象提供的Service了:),其实是一个ServiceLocator的例子,只需要知道它,然后声明自己需要那个服务,就从这个ServiceLocator来得到自己的服务就好了。
看Module的定义其实真的没有太多的看头,其实和plugin.xml(不管是Eclipse的还是Apollo的都是一样),只不过是换了个名称而已。多了ModuleActivator的声明,这个类就是用来控制Module的生命周期的,很有用。其它的描述除了有Module自身信息之外,还有依赖关系的描述;以及对外提供接口的描述。我们实用Provide-Service的方式来描述,其实是差不多的。
OSGI的类加载器有一套自己的定义。主要是系统类加载器,以及模块的类加载器,还有默认的启动类加载器(不是JVM的那个,而是OSGI里面定义的一个bootClassLoader)
有一张图详细画了这个类加载器的结构,和OSGI进行类加载的步骤,很清晰,很好。
关于LifeCycle,就不用再啰嗦了。只要知道状态的变化就OK了。
服务层实现了服务的注册,服务的获取,服务的监听,其实也是一套面向服务的体系结构,SOA嘛,这里也是简单的实现。