Karaf:动态捆绑重启

Karaf : dynamic bundle restart

我正在为 Karaf 开发复合功能(即包含其他功能作为嵌套元素的功能)。我想写出嵌套功能的配置文件,然后从外部范围(即我正在编写的功能)重新启动嵌套功能中包含的包。

  1. 如何在运行时从另一个包中查询其所有包的功能。

  2. 如何从另一个包动态地重新启动一个包?

对于所有两个操作,您需要 org.osgi.framework.BundleContext 的实例 - 您可以在捆绑激活器中获得一个。

要查询功能(及其相关功能和包),您需要访问 Karaf 的 org.apache.karaf.features.FeaturesService OSGi 服务 - 例如使用 BundleContextgetServiceReference() 方法。

要获取任何捆绑包(以便能够重新启动它),您可以获取一个知道其 ID 的包:BundleContext.getBundle("ID")