我有OSGI包实现在另一个包中指定的API(添加为依赖)。 是否有任何方法可以指定每当重新启动API包时,重新启动实现包(依赖项)?
答案 0 :(得分:1)
您可以调用refresh,并且将重新启动所有捆绑包,这些捆绑包具有旧API捆绑包。您可以在控制台上调用refresh或以编程方式调用FrameworkWiring.refreshBundles(...)有关详细信息,您可以查看上述函数的javadoc。
答案 1 :(得分:1)
这取决于,如果您在实现包中使用声明式服务或蓝图来公开API包中声明的服务,您可以获得此类行为。
在第5版中,存在子系统规范,其中您可以在复合内部拥有多个捆绑包,这些捆绑包将共享一个生命周期[1]。
[1] - http://coderthoughts.blogspot.com.br/2013/04/osgi-subsystems.html
答案 2 :(得分:0)
我不确定,但我想OSGi容器会在依赖包中内部执行此操作 变化。无需额外配置。
但是,如果不是这种情况,您可以尝试使用 清单标题“Require-Bundle”而不是“import-package”来显示 对其他包的依赖。