更新:
我想知道是否可以强制所有引用其他OSGi
服务的依赖项解除绑定,然后重新绑定。
e.g。
我有A
,B
,C
所有OSGi
服务,这些服务与[{1}}具有服务相关性。然后X
改变一些东西,并希望绑定到它的所有其他服务执行unbind然后绑定。没有X
被停止或重新加载或更改其他服务的代码。
这是否可以使用标准X
?
答案 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。