2017-10-06 46 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) –