我想將部署在karaf中的bundle的所有配置文件都部署在karaf文件夾中。我希望當捆綁conf文件發生變化時通知karf。如何在/ etc karaf文件夾中放置bundle配置/屬性文件
我有一個包含多個特徵的分佈,這個特徵是XML的一個特徵。我已經嘗試了幾個例子,我將這個conf文件添加到下面的功能中,但這不起作用。
<feature name="gc-backbone-mqtt" version="${linksmart.gc.version}">
<feature version="${linksmart.gc.version}">gc-backbone-router</feature>
<bundle>mvn:org.eclipse.paho/org.eclipse.paho.client.mqttv3/1.0.0</bundle>
<feature version="${linksmart.gc.version}">gc-type-tunnelled</feature>
<configfile finalname="/etc/mqttBackboneProtocol.cfg">mvn:eu.linksmart.gc/backbone.mqtt.impl/${linksmart.gc.version}/mqttprotocol.properties</configfile>
<bundle>mvn:eu.linksmart.gc/backbone.mqtt.impl/${linksmart.gc.version}</bundle>
</feature>
一些我已經試過的東西:
http://karaf.922171.n3.nabble.com/OSGi-bundle-configuration-file-td4025438.html
我不希望將文件與具體路徑複製爲如下所示:
有沒有人知道如何做到這一點?
UPDATE
爲了實現這個配置文件被部署在etc
文件夾,以便捆可從外部重新配置,我在3個步驟完成的:
構建配置文件:(Works)
爲了使配置文件可以被Maven尋址,我在bundle pom中添加了以下部分。這樣的配置文件是部署在存儲庫:
的pom.xml
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<executions>
<execution>
<id>attach-artifacts</id>
<phase>package</phase>
<goals>
<goal>attach-artifact</goal>
</goals>
<configuration>
<artifacts>
<artifact>
<file>src/main/resources/mqttprotocol.properties</file>
<type>cfg</type>
<classifier>configuration</classifier>
</artifact>
</artifacts>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
文件部署在karaf etc
(工程)
要在karaf部署配置文件etc
文件夾我在功能文件中添加了<configfile>
,如下所示:
features.xml
</feature>
<feature name="gc-backbone-mqtt" version="${linksmart.gc.version}">
<feature version="${linksmart.gc.version}">gc-backbone-router</feature>
<bundle>mvn:org.eclipse.paho/org.eclipse.paho.client.mqttv3/1.0.0</bundle>
<bundle>mvn:org.apache.felix/org.apache.felix.fileinstall/3.2.8</bundle>
<configfile finalname="/etc/MQTTBackboneProtocol.cfg">mvn:eu.linksmart.gc/network.backbone.protocol.mqtt.impl/${linksmart.gc.version}/cfg/configuration</configfile>
<feature version="${linksmart.gc.version}">gc-type-tunnelled</feature> <bundle>mvn:eu.linksmart.gc/network.backbone.protocol.mqtt.impl/${linksmart.gc.version}</bundle>
</feature>
捕獲配置變化:(不工作)
要捕獲配置文件我添加的代碼你的建議(@Donald_W)的變化。問題是我只得到文件的通知位於文件夾deploy
,但不在etc
。我調試這段代碼,我發現etc
中的文件專門稱爲這些文件的「監聽者」。我不那麼知道我可以成爲部署在etc
它還沒有工作。但我認爲,我將在這方面朝着正確的方向前進。謝謝!儘快讓它工作我給你提問! –
我已經添加了一個清晰的例子,你如何能夠實際訪問神器,它應該有希望幫助你。 –
我試過了,但是得到這個錯誤信息:2015-04-28 09:37:41,105 | '錯誤| ix.fileinstall])| configadmin | 10 - org.apache.felix.configadmin - 1.6.0 |無法使用配置org.apache.felix.fileinstall.26c87fa4-697e-472d-9296-e8c4ab 8a9550 for [org.osgi.service.cm.ManagedServiceFactory,id = 445,bundle = 120/mvn:org.apache.felix/org.apache.felix.fileinstall/3.4.2]:無法識別綁定到mvn的配置:org.apache.felix/org.apache.felix.filein stall/3.2.8' –