我有一个OSGi包,它声明了对org.osgi.service.subsystem包的可选依赖项。它使用DS侦听添加新的Subsystem实例。但是,即使依赖项不可用,此DS组件也会激活。
如果可选的依赖项可用,是否只能激活此DS组件?
基本上,此DS组件执行仅在运行时中存在实际子系统时才相关的处理。如果没有,并且该类在运行时中不可用,则此组件应保持休眠状态。
答案 0 :(得分:1)
据我所知,这是不可能的。如果捆绑解析后捆绑包变为可用,则捆绑包不会自动绑定到可选包,这是一个更大的问题。您必须明确刷新包。
因此,在这种情况下,更好的解决方案是将组件移动到一个单独的包中,该包对子系统包具有强制依赖性。然后可以将其与子系统支持一起安装。