我有一個(BND註釋的)組件實現一個簡單的API,並公開本身作爲配置服務..用XML(而不是屬性)
package com.mycompany.impl;
import com.mycompany.api.IFoo;
@Component(designateFactory=FooImpl.Configuration.class)
class FooImpl implements IFoo {
interface Configuration {
String foo();
// ..
}
Configuration configuration;
@Activate
public void activate(Map properties) {
configuration = Configurable.createConfigurable(Configuration.class, properties);
// ..
}
}
其配置是從觀看目錄加載一個服務通過Felix FileInstall並且服務由Felix配置服務實例化(至少,我認爲這是最新發生的事情 - 我是OSGi的新手,請耐心等待)使用生成的MetaType描述符工作得很好。但是,就目前而言,FooImpl需要結構化配置(列表清單,列表映射等),我想知道是否有一種優雅的(*)方法通過類似的工作流配置組件實例;也就是說,配置發現和實例化/部署仍然是集中的。
在我看來,配置服務規範管理地圖 - 我將不得不推出我自己的配置服務& FileInstall能夠呈現具有xml/json/yaml支持的結構化配置的組件?
- 與定義XML配置文件在屬性中的位置相反...... confiception?並做我自己的解析。
謝謝。那麼,物理存儲器中的值類型限制(僅適用於FileInstall處理屬性文件)? 看起來像ConfigurationAdmin接口將採取任何字典 - 我不知道如何/字符串的關鍵限制執行(<1.5支持?:)),theres沒有任何阻止我發送Dictionary與從XML解組對象? –
pgn
如果嚴格遵循規範,則值類型僅限於OSGi主要屬性類型;請參閱OSGi Core規範第3.2.7節中標題爲「主要屬性類型」的圖。 –
是的,鍵必須是字符串(OSGi Compendium,第104.4.3節)。它將是'Dictionary',但是規範早於Java 5泛型。 –