2017-10-06 45 views
0

我正在开发Karaf的组合功能(即包含嵌套元素的其他功能的功能)。我想写出嵌套特性的配置文件,然后从外部作用域(即我写的特性)写出配置文件,我想重新启动嵌套特性中包含的包。Karaf:动态包重新启动

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

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

+0

你可以这样做,但它不是OSGi的方式。更好的方法是让每个软件包对配置更改作出反应。蓝图以及声明性服务提供了对配置更改作出反应的功能。 –

回答

0

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

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

要得到任何包(要能重新启动它),你可以得到一个知道它的ID:BundleContext.getBundle("ID")

+0

是否有一种独立于彼此配置捆绑的方式?即如何在实例化时将变量传递给包? – LostInTheFrequencyDomain

+0

有配置管理服务 - 它应该用于捆绑配置“OSGi的方式” - 见[这里](http://felix.apache.org/documentation/subprojects/apache-felix-config-admin.html) –