OSGI:等待声明性服务组件启动的最佳方法是什么?

时间:2014-03-12 13:59:26

标签: eclipse osgi equinox declarative-services

我有以下问题:

1:激活OSGI包A(equinox),激活器解析XML文件
2:在XML文件中,请求声明性服务,该服务存在于另一个包(B)中 3:捆绑B尚未激活,因此捆绑A的激活器需要等待

我知道如何在DS中完全解决这个问题,但解析需要在激活器中进行。此外,我不想愚弄初级和喜欢。理想情况下,我希望能够在需要时注册捆绑包B提供的服务。

有没有一种优雅的方法来实现这一目标?

谢谢,

基斯

1 个答案:

答案 0 :(得分:2)

OSGi服务本质上是动态的,因此您永远不应该依赖服务的可用性。您需要通过ServiceTracker或更好的方式使用某种服务跟踪,转而使用纯DS解决方案,为您完成所有艰苦工作。

由于您表明您必须解析XML文件,我猜您决定使用某种外部配置来使用服务。我建议重新考虑这种类型的架构。您需要编写大量代码,而通常使用配置管理和声明服务/蓝图的组合可以达到相同的目标。