OSGI服务发布与引用

    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服务的发布与引用,则是后话。

猜你喜欢

转载自killko.iteye.com/blog/1684824
今日推荐