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间交互的目的。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值