我正在开发Karaf的组合功能(即包含嵌套元素的其他功能的功能)。我想写出嵌套特性的配置文件,然后从外部作用域(即我写的特性)写出配置文件,我想重新启动嵌套特性中包含的包。Karaf:动态包重新启动
如何在运行时从另一个捆绑包中查询其所有捆绑软件的功能。
如何从另一个捆绑包动态重新启动捆绑包?
我正在开发Karaf的组合功能(即包含嵌套元素的其他功能的功能)。我想写出嵌套特性的配置文件,然后从外部作用域(即我写的特性)写出配置文件,我想重新启动嵌套特性中包含的包。Karaf:动态包重新启动
如何在运行时从另一个捆绑包中查询其所有捆绑软件的功能。
如何从另一个捆绑包动态重新启动捆绑包?
对于所有的两个操作,你需要org.osgi.framework.BundleContext
的实例 - 你可以在你的bundle激活器中获得一个。
要查询功能(及其相关功能及其捆绑包),您需要访问Karaf的org.apache.karaf.features.FeaturesService
OSGi服务 - 例如使用BundleContext
的getServiceReference()
方法。
要得到任何包(要能重新启动它),你可以得到一个知道它的ID:BundleContext.getBundle("ID")
是否有一种独立于彼此配置捆绑的方式?即如何在实例化时将变量传递给包? – LostInTheFrequencyDomain
有配置管理服务 - 它应该用于捆绑配置“OSGi的方式” - 见[这里](http://felix.apache.org/documentation/subprojects/apache-felix-config-admin.html) –
你可以这样做,但它不是OSGi的方式。更好的方法是让每个软件包对配置更改作出反应。蓝图以及声明性服务提供了对配置更改作出反应的功能。 –