1

假设有两个 OSGi 包的 A 和 B 分别导出 x 和 y 包。如果存在 A 依赖于 B 的导出而 B 依赖于 A 的导出的情况,应该首先启动哪一个。假设一个人想要从不同类(即不在 Activator 类中)的共享注册表中获取 ServiceReference,那么如何使用当前包的上下文初始化 BundleContext 对象。

这可能会解决我上面提到的关于相互依赖的情况。就像 A 可以在其激活器的启动方法中使用 B 的导出,而 B 可以在调用时在不同类的方法中使用 A 的导出

4

1 回答 1

2

包解析(resolving)不同于启动和运行包。不要将两者混为一谈,这一点非常重要。

OSGi 框架可以解决包依赖关系中的循环。因此,一旦解决了捆绑包,就可以按某种顺序启动它们。您需要确保您不会将捆绑包设计为依赖于它们的相对起始顺序。这就是您使用服务和 DS 之类的东西的原因。无法解决服务依赖中的循环。因此,请确保避免此类循环。

于 2012-08-08T16:54:19.993 回答