在osgi蓝图中阅读环境变量

时间:2015-08-03 18:39:21

标签: spring apache-camel jbossfuse blueprint-osgi

我正在构建一些部署在OSGi(JBoss Fuse)中的驼峰路线

我正在阅读我的属性文件:

  <ext:property-placeholder id="propiedades">
    <ext:location>file:/C:/TestBed/sucursal.propiedades</ext:location>
  </ext:property-placeholder>

但现在我想要改变&#34;文件:/ C:TestBed /&#34;对于某些具有某种路径的占位符(如KARAF_ETC)。我知道这个环境变量存在,因为当我在路线中使用它时,它可以正常工作

    from(URI_IN)
    .log("{{env:KARAF_ETC}}") //Output is: C:\jboss-fuse-6.2.0.redhat-133\bin\..\etc
    .to(URI_OUT);

所以,我想做类似的事情:

  <ext:property-placeholder id="propiedades">
    <ext:location>file:{{env:KARAF_ETC}}/sucursal.propiedades</ext:location>
  </ext:property-placeholder>

但是不起作用。

属性占位符有点棘手,所以我尝试使用文件:/ {{env:KARAF_ETC}},文件:/ {{KARAF_ETC}},文件:$ {KARAF_ETC}以及更多组合,但没有人工作(但有些他们抛出不同的错误)。

在蓝图中获取环境变量的正确sintax是什么?

3 个答案:

答案 0 :(得分:0)

你试过这个吗?

<blueprint 
xmlns:ext="http://aries.apache.org/blueprint/xmlns/blueprint-ext/v1.0.0" 
...> 

   <!-- Load system property --> 
   <ext:property-placeholder /> 

   <bean ...><property name="foobar" value="${foobar}"/></bean> 

</blueprint> 

我在这里找到了它:http://karaf.922171.n3.nabble.com/Get-environment-variable-td4025807.html

答案 1 :(得分:0)

你可以使用karaf访问karaf环境变种。[某事],但是在骆驼中你可以使用KARAF_ [SOMETHING]

访问

感谢克劳斯易卜生指出范围的差异......

然而,这个骆驼/ osgi的东西真的很奇怪......很难驯服......

答案 2 :(得分:0)

这对我有用:

<propertyPlaceholder id="properties" location="file:${karaf.home}/etc/sucursal.properties"/>