4

宣言型サービスの使用法を含むバンドルを作成しています。構成には、DS宣言のプロパティを使用しています。これらの小道具は通常、Config Adminによって変更できますが、永続化されません。コンテナの再起動後、コンポーネントにはデフォルト値があります。

私は次のようにConfigadminを使用しています:

Configuration c = configurationAdmin.getConfiguration(UserAgent.SERVICE_PID, null);
System.out.println(c.getProperties()); // every time is null!
Dictionary props = new Hashtable();
props.put(UserAgent.PROPERTY_PORT, 5555);
c.update(props);

そして私が持っているコンポーネントで:

// ...

@Modified
public void updated(ComponentContext context) {
    config = context.getProperties();
    init();
}

@Activate
protected void activate(ComponentContext context) {
    config = context.getProperties();
    init();
}
//...

Felixを使用していますが、プロパティファイルはキャッシュに保存されています

service.bundleLocation="file:bundles/cz.b2m.osgi.phonus.core_1.0.0.SNAPSHOT.jar"
service.pid="cz.b2m.osgi.phonus.sip"
port=I"5555"

しかし、再起動後はロードされません。私が間違っているのは何ですか?すべてのヒントをありがとう。

4

1 に答える 1

1

問題は、再起動(クリーン)するたびにConfigAdminバンドルのデータフォルダーが消去されるPaxRunnerにありました。

Pax Runnerがデータをクリアしないようにするために、--usePersistedState=trueフラグを使用できます。

于 2012-05-30T12:11:24.687 に答える