`
killko
  • 浏览: 102577 次
  • 性别: Icon_minigender_1
  • 来自: 广州
博客专栏
Group-logo
Servicemix&Fu...
浏览量:0
社区版块
存档分类
最新评论
阅读更多
    OSGI context提供service register方法负责osgi服务的注册发布,服务发布时,可带上服务属性,这些服务属性可用于服务引用方查找服务时的filter。
    一般来说,没有依赖的简单服务,可以直接在bundle的activator start方法里注册发布,但通常情况下,服务都会存在或多或少的依赖,由于osgi平台的动态性,被依赖的服务并不能确定在依赖它的服务所在的bundle启动前变为可用,所以,一般会借助service tracker来监听服务注册的事件,当被依赖的服务可用时,service tracker就能感知到,进而引用它,然后发布自己的服务,这样服务之间的依赖关系就不会受限于bundle的启动次序,而bundle的启动次序并不是确定。
    除了采用java代码方式注册服务之外,Declarative Service、Blueprint都提供更简便的方式实现服务的注册和引用,并管理服务间的依赖关系。
    但无论是Declarative Service还是Blueprint,其本质还是用osgi的service register、servicetracker之类来注册服务,只是这些工作有Declarative Service或Blueprint容器负责 ,你需要做的事就是写好相应的XML文档。
    至于Declarative Service或Blueprint容器如何实现osgi服务的发布与引用,则是后话。
1
1
分享到:
评论
1 楼 a_alter 2013-09-25  
如果 OSGI Bundle 中有以下两个bundle  日志 和  报表

日志 <----> 报表  相互依赖 service tracker 还能解决这问题?

相关推荐

Global site tag (gtag.js) - Google Analytics