Reading enviroment variable in osgi blueprint

2019-09-07 20:12发布

I'm building some camel routes deployed in OSGi (JBoss Fuse)

I'm reading my properties file using this:

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

But now I want change "file:/C:TestBed/" for some placeholder with some path (like KARAF_ETC). I know this enviroment variable exists because when I use it in the route, it works ok

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

So, I want to do something like:

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

But does not work.

Property placeholder is kinda tricky, so I tried with file:/{{env:KARAF_ETC}}, file:/{{KARAF_ETC}}, file:${KARAF_ETC} and more combinations but no one works (but some of them throw differents errors).

What is the correct sintaxis to get the enviroments variables in blueprint?

3条回答
虎瘦雄心在
2楼-- · 2019-09-07 20:28

Have you tried this?

<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> 

I've found it here: http://karaf.922171.n3.nabble.com/Get-environment-variable-td4025807.html

查看更多
迷人小祖宗
3楼-- · 2019-09-07 20:28

This works for me:

<propertyPlaceholder id="properties" location="file:${karaf.home}/etc/sucursal.properties"/>
查看更多
不美不萌又怎样
4楼-- · 2019-09-07 20:47

You can access to karaf enviroment vars using karaf.[something], but in camel you can access using KARAF_[SOMETHING]

Thanks Claus Ibsen for pointing the differences in the scopes...

nevertheless, this camel/osgi thing is really weird...It is hard to tame...

查看更多
登录 后发表回答