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



我有以下问题:

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

我知道如何在DS中处理这个问题,但是解析需要在激活器中执行。此外,我不想愚弄开始水平和喜欢。理想情况下,我希望能够在需要时注册bundle B提供的服务。

是否有一种优雅的方式来实现这一点?

谢谢,

Kees

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

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

最新更新