私はApache Service Mix 6.1でKaraf 3.0.5にデプロイする単純なCamelアプリケーションバンドルを用意しています。設定ファイルはetc /ディレクトリに置かれます(これはwf.cfgという名前です)。私は、アプリケーションバンドルに動的設定変更機能を持たせたいと思っています。 wf.cfgで何かが変更されるとすぐにバンドルすることができます。このために私は私のblueprint.xmlKarafのcm:managed-properitesを使用した動的コンフィグレーション3.0.5
<bean id="configBean" class="com.jabong.orchestratorservice.basecomponent.config.ConfigBean">
<cm:managed-properties persistent-id="wf" update-method="refresh" update-strategy="component-managed"/>
</bean>
public class ConfigBean {
private String env;
public String getEnv() {
return env;
}
public void setEnv(String env) {
this.env = env;
}
public void refresh() {
System.out.println("Config refreshed");
}
}
に次のように追加している。しかし、私はwf.cfgファイルを更新するたびに、ConfigBeanクラスのリフレッシュ方法が呼び出されることはありません。
私は、管理サービスファクトリを使用していました。
<cm:managed-service-factory id="managed-service-factory" factory-pid="wf" interface="com.jabong.orchestratorservice.basecomponent.config.ConfigBean">
<cm:managed-component class="com.jabong.orchestratorservice.basecomponent.config.ConfigBean">
<cm:managed-properties persistent-id="" update-strategy="component-managed" update-method="refresh" />
</cm:managed-component>
</cm:managed-service-factory>
しかし、それは助けになりません。誰かが私にこの問題を解決するのを助けてくれますか?
注:cfgファイルを変更したときに完全なコンテキストをリロードするので、cm:property-placeholderは使用しません。私はcm:managed-propertiesのみを使用したいと思います。