我想在camelContext中获取karaf env变量 我添加了
<ext:property-placeholder placeholder-prefix="$[" placeholder-suffix="]"/>
在camelcontext之外,并试图在camelcontext中使用karaf.home。但它无法从该位置加载数据。我试过这样的
<camelContext id="_camelContext"
xmlns="http://camel.apache.org/schema/blueprint">
<propertyPlaceholder id="config" location="file:$[karaf.home]/etc/application_config.properties" />
</camelContext>
我们无法在camelcontext中访问它吗?
答案 0 :(得分:0)
Karaf变量定义为JVM系统变量,而不是env变量 你需要什么? 如果您只需要加载配置文件,请使用OSGi方法,不要直接引用任何路径。
<blueprint>
<cm:property-placeholder id="yourConfig"
persistent-id="file.name" />
<camelContext>
<propertyPlaceholder location="blueprint:yourConfig" />
<!-- Access properties using {{property.name}} -->
<route id="One" autoStartup="{{route.one.enabled}}" > ...
</camelContext>
</blueprint>
这将从${karaf.home}/etc/file.name.cfg
加载属性
你的包也可以在其他容器内运行。
答案 1 :(得分:0)
如果您尝试使用环境变量内部标签,我会在其他手册中看到过类似内容,等,应该使用{{var}} 而不是$ { var}。您可以使用{{karaf.home}}或{{karaf.root}}或{{karaf.etc}}。
重要提示:如果您偶尔在文件路径\ r中(例如C:\ receive.cfg)具有格式化符号,则\ n路径评估工作不正确,Camel不支持符号转义,因此唯一的方法是-编辑文件名。
我的蓝图的一部分:
<camelContext xmlns="http://camel.apache.org/schema/blueprint">
<route>
<from .../>
<setBody>
<method ref="dbExtractorBean" method="extract(true, '{{karaf.home}}\etc\com.mycopmany.extraction.cfg')"/>
</setBody>
<to .../>
</route>
</camelContext>
可以看到env值:
此配置适用于我开发的Windows计算机,在Linux上,您应使用/进行路径分离,(目前)我不知道如何配置路径分隔符以使此路由在Windows和Linux计算机上均有效,而无需重新编译