У меня есть пакет, который использует файл конфигурации 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