0

我有实现在另一个包中指定的 API 的 OSGI 包(作为依赖项添加)。有没有办法指定每当重新启动 API 捆绑包时,重新启动实施捆绑包(依赖项)?

4

3 回答 3

1

您可以调用 refresh 并且将重新启动所有包连接到旧 API 包的包。您可以在控制台上调用 refresh 或以编程方式调用 FrameworkWiring.refreshBundles(...) 有关更多信息,您可以查看上述函数的javadoc 。

于 2013-06-13T18:46:37.903 回答
1

这取决于,如果您在实现包中使用声明式服务或蓝图来公开 API 包中声明的服务,您可以获得这样的行为。

在第 5 版中,有一个子系统规范,您可以在一个组合中拥有多个捆绑包,这些捆绑包将共享一个生命周期 [1]。

[1] - http://coderthoughts.blogspot.com.br/2013/04/osgi-subsystems.html

于 2013-06-13T19:07:47.350 回答
0

我不确定,但我猜 OSGi 容器会在依赖包发生更改时在内部执行此操作。无需额外配置。

但是,如果不是这种情况,您可以尝试使用清单标头“Require-Bundle”而不是“import-package”来显示对其他包的依赖关系。

于 2013-06-14T09:24:33.670 回答