我有以下问题:
1:激活OSGI包A(equinox),激活器解析XML文件
2:在XML文件中,请求声明性服务,该服务存在于另一个包(B)中
3:捆绑B尚未激活,因此捆绑A的激活器需要等待
我知道如何在DS中完全解决这个问题,但解析需要在激活器中进行。此外,我不想愚弄初级和喜欢。理想情况下,我希望能够在需要时注册捆绑包B提供的服务。
有没有一种优雅的方法来实现这一目标?
谢谢,
基斯
答案 0 :(得分:2)
OSGi服务本质上是动态的,因此您永远不应该依赖服务的可用性。您需要通过ServiceTracker
或更好的方式使用某种服务跟踪,转而使用纯DS解决方案,为您完成所有艰苦工作。
由于您表明您必须解析XML文件,我猜您决定使用某种外部配置来使用服务。我建议重新考虑这种类型的架构。您需要编写大量代码,而通常使用配置管理和声明服务/蓝图的组合可以达到相同的目标。