2017-07-18 99 views
0

我正在運行Karaf並且有一個藍圖xml文件,用於訪問Karaf等目錄中的文件(... apache-karaf/etc/SomeProperties.properties) :在等目錄中讀取Karaf文件目錄

<ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]"> 
    <ext:location>file:etc/SomeProperties.properties</ext:location> 
</ext:property-placeholder> 

<bean id="SomeBean" class="impl.com.package.SomeBean" 
     init-method="init" destroy-method="destroy"> 
    <property name="beanvariable1" value="$[property1key]"/> 
    <property name="beanvariable2" value="$[property2key]"/> 
</bean> 

不過,我也想在一個特定的文件訪問,不僅所有的屬性,而是來自同一karaf/etc目錄下,在.cfg結尾的所有文件(不單獨命名的任何文件) 。這可以做到嗎?

特別是,有沒有辦法指定一個目錄位置,而不是文件位置?並在該目錄內另外過濾文件類型?

或者,有沒有什麼辦法(使用藍圖或其他方式)從在Karaf中運行的軟件包中訪問apache-karaf/etc目錄中的所有文件(而不僅僅是其中包含的特定屬性)?

回答

1

直接獲取的句柄配置管理服務,那麼你可以通過所有的存儲配置集卷(稱爲「PID」在OSGi的永久ID)

你有幾個選項,您可以使用引用它藍圖內置了對你的bundle的bean引用(它有一種遍歷配置管理服務的方式)。請參閱此鏈接的更完整的參考資料之一與藍圖的工作:IBM's Blueprint Reference

或者你可以設置基準,並獲得直接連接到配置管理服務

<reference id="configAdmin" interface="org.osgi.service.cm.ConfigurationAdmin"> 

那麼「configAdmin」豆絲進入你的豆。

+0

偉大的信息。謝謝!後續,如果可以提供幫助:在遍歷每個PID(Configuration的getProperties()方法中的屬性)時,會出現其他屬性:service.pid和felix.fileinstall.filename。任何想法是否有可能只獲得文件中實際包含的屬性,而不是這些額外的屬性(即使它們看起來有用)? –

+0

任何時候=)不可能刪除列表中的那些.. felix/karaf添加它們以進行跟蹤。 –