我试图为Camel相关的东西和其他东西获得一个单独的配置/属性文件。使用Blueprint但我想在这个特殊情况下也可能是Spring
据我所知,在Karaf中使用property-placeholder作为配置数据是一种很好的做法。将在../karaf/ect文件夹中搜索。
很好,因为我们没有固定的编码路径。我有那部分工作。
<blueprint ...
<cm:property-placeholder persistent-id="org.example.project" update-strategy="reload" id="prop">
...
</cm:property-placeholder>
<camelContext id="myCamelContext" xmlns="http://camel.apache.org/schema/blueprint">
<route id="watchfolder">
<from uri="file:{{ENDPOINT.IN}}"/>
<to uri="direct:test"/>
</route>
../ karaf / ect / org.example.project.cfg文件:
ENDPOINT.IN=C:/Users/username/Documents/project/folderwatch
在camelContext中我们也可以使用propertyPlaceholder。如果我像这样定义
,则可以正常工作...
<propertyPlaceholder id="properties" location="file:C:/Users/username/Documents/project/camel.properties" />
...
并将属性移动到文件C:/Users/username/Documents/project/camel.properties。
但这是我的蓝图文件中的固定路径。我认为最好让它可配置为在不同的开发环境中进行测试/工作/ ...只需指向不同的配置文件。
我想这样做,这不起作用:
...
<propertyPlaceholder id="properties" location="file:{{CAMEL.PROPERTIES_FILE}}" />
...
../ karaf / ect / org.example.project.cfg文件:
CAMEL.PROPERTIES_FILE=C:/Users/username/Documents/project/camel.properties
结果是:
..
Caused by: java.io.FileNotFoundException: {{CAMEL.PROPERTIES_FILE}} (The system cannot find the file specified)
..
似乎该值未被解析为属性。 我尝试了类似的变体:
location="file:${CAMEL.PROPERTIES_FILE}"
location="file:{{blueprint:CAMEL.PROPERTIES_FILE}}"
location="file:{{blueprint:prop:CAMEL.PROPERTIES_FILE}}"
(这些最后的尝试只是赌博。我不明白该功能背后的含义)
最终,问题是:
如何指定变量camel属性文件?
我正在使用:Karaf 4.0.0,Camel 2.15.3,Win7
答案 0 :(得分:0)
有两种方法可以做到这一点
<propertyPlaceholder id="properties" location="${env:PROP_FILE_OS_ENV_LOC}"/>
其中PROP_FILE_OS_ENV_LOC是OS环境变量
<propertyPlaceholder id="properties" location="${PROP_FILE_JVM_LOC}"/>
其中PROP_FILE_JVM_LOC是JVM属性