两个OSGi包之间的相互依赖性

时间:2012-08-08 09:41:16

标签: osgi

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

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

1 个答案:

答案 0 :(得分:2)

程序包解析(解析)与启动和运行bundle不同。不要将两者混为一谈非常重要。

OSGi框架可以解决包依赖性中的循环。因此,一旦捆绑解析,它们就可以按某种顺序启动。您需要确保不设计捆绑包以依赖于它们的相对起始顺序。这就是您使用DS等服务的原因。服务依赖项中的循环无法解决。所以一定要避免这样的循环。