读书人

bundle通讯-综述

发布时间: 2012-09-05 15:19:35 作者: rapoo

bundle通信----综述

OSGi中,我们可以把要实现的功能分割成多个子模块,每个子模块用单独的bundle来实现其专属功能,每个bundle都有自己的classloader, 从而做到了真正的物理意义上的模块隔离。这样一来就引出了bundle间相互通信的问题, 总的来说,bundle间通信主要由以下三种手段实现:

(1):通过Export-Package和Import-Package实现

每个模块可以通过声明Export-Package对外提供访问此模块中的类和接口,先将bundle导出,再导入(Import-Package)到需要调用的bundle中即可。

(2):利用OSGi service

所谓的服务 (Service) 就是标准的 Java 对象向服务注册表 (Service Registry) 注册的一个或者多个接口 (interface)。 Bundle 可以向服务注册表注册服务,查询服务并使用它们

(3):利用OSGi事件管理服务(EventAdmin)

该方法基于OSGi框架提供的Event服务,模块对外发布事件,EventAdmin管理器将事件发送给订阅了此事件的模块,从而达到bundle间交互的目的。


读书人网 >其他相关

热点推荐