重新绑定/重新启动依赖于其他捆绑的捆绑包

时间:2015-03-31 09:46:49

标签: java osgi apache-felix osgi-bundle

更新:

我想知道是否可以强制所有引用其他OSGi服务的依赖项解除绑定,然后重新绑定。

e.g。

我有ABC所有OSGi服务,这些服务与[{1}}具有服务相关性。然后X改变一些东西,并希望绑定到它的所有其他服务执行unbind然后绑定。没有X被停止或重新加载或更改其他服务的代码。

这是否可以使用标准X

1 个答案:

答案 0 :(得分:2)

您似乎混淆了服务依赖项和包(类型)依赖项。

对于服务依赖性,当注销服务并注册替换服务时,会发布已发布的服务事件。服务的客户端可以做出反应,这是Declarative Services,Blueprint和ServiceTracker都有帮助的。

对于包依赖关系,如果更新了导出包的包,则导入包的所有相关包将保持连接到包的旧版本。可以刷新这些依赖包,这将导致它们被停止,将新的类加载器连接到更新的包,然后重新启动。请参阅https://osgi.org/javadoc/r5/core/org/osgi/framework/wiring/FrameworkWiring.html#refreshBundles%28java.util.Collection,%20org.osgi.framework.FrameworkListener...%29