我有使用配置文件org.jemz.karaf.tutorial.hello.service.config.cfg
有一個屬性捆綁:Karaf添加額外的屬性,以現有的配置文件
org.jemz.karaf.tutorial.hello.service.msg="I am a HelloServiceConfig!!"
我使用ConfigAdmin藍圖是這樣的:
<cm:property-placeholder persistent-id="org.jemz.karaf.tutorial.hello.service.config" update-strategy="reload" >
<cm:default-properties>
<cm:property name="org.jemz.karaf.tutorial.hello.service.msg" value="Hello World!"/>
</cm:default-properties>
</cm:property-placeholder>
<bean id="hello-service-config"
class="org.jemz.karaf.tutorial.hello.service.config.internal.HelloServiceConfig"
init-method="startup"
destroy-method="shutdown">
<property name="helloServiceConfiguration">
<props>
<prop key="org.jemz.karaf.tutorial.hello.service.msg" value="${org.jemz.karaf.tutorial.hello.service.msg}"/>
</props>
</property>
</bean>
<service ref="hello-service-config" interface="org.jemz.karaf.tutorial.hello.service.IHelloService" />
這工作正常只要我可以更改該屬性的值並且該包自動更新該屬性。
我想知道是否有任何添加新的屬性到我的配置文件,而不必改變藍圖(這涉及到編譯/包再次)的任何方式。當然,我的包應該準備好處理新的屬性。
不知道這在OSGi中是否有意義。任何人都可以給我提示如何動態地將新屬性添加到現有配置文件並使其在ConfigAdmin中可用?
你也可以使用一個類來實現ConfigurationListener ,BundleContextAware'接口。然後,您將收到有關配置更改的所有事件,因此您可以在應用程序中處理任何您想要的內容 – yodamad