3

我有以下问题:

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

我知道如何纯粹在 DS 中处理这个问题,但是解析需要在激活器中进行。另外,我不想在开始级别之类的东西上胡闹。理想情况下,我希望能够在需要时注册捆绑 B 提供的服务。

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

谢谢,

基斯

4

1 回答 1

2

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

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

于 2014-03-12T14:39:41.853 回答