如何控制从拾取目录部署的捆绑包的启动级别?

时间:2013-08-13 17:17:48

标签: equinox p2 osgi-bundle

是否可以控制pickup文件夹中丢弃的捆绑包的起始级别?在某个其他服务可用之前,捆绑包有没有办法要求它不被激活?

我们有很多相互依赖的捆绑包完全由起始级别管理;即如果Bundle Y在启动时需要Bundle X,则Y具有更高的启动级别。

如果在拾取目录中删除了捆绑包,则此方法无法正常工作。似乎这些捆绑包在任何其他捆绑之前以及它们之间的任意顺序开始,可能同时开始。

有没有办法控制拾取文件夹中包的起始级别?

更好的是,有没有办法让bundle声明其依赖于其他服务?在这种情况下,我甚至可以在拾取时使用多个捆绑包,而另一个依赖于另一个捆绑包。

1 个答案:

答案 0 :(得分:0)

您只能将捆绑包的分辨率限制为功能的可用性,而不是激活。激活肯定会在解决后发生,但可以按任何顺序激活已解决的捆绑包。因此,捆绑级别的激活依赖关系不能很好地工作。

相反,您应该使用“组件”(即声明性服务),它们可以选择将其生命周期与其他组件的可用性绑定。使用此选项,bundle可以以任意顺序启动,但是一旦所有服务依赖项被激活,服务仍然只被激活/暴露。