问题
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?
回答1:
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
回答2:
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...
回答3:
This works for me:
<propertyPlaceholder id="properties" location="file:${karaf.home}/etc/sucursal.properties"/>
来源:https://stackoverflow.com/questions/31794470/reading-enviroment-variable-in-osgi-blueprint