使用camel.xml中的环境变量来配置端点

时间:2014-10-24 10:08:56

标签: variables configuration apache-camel environment endpoint

我的camel.xml中有一个cxf端点配置,如下所示:

<cxf:cxfEndpoint id="callbackInbound"
      serviceClass="ch.axpo.emis.v1.timeseriesservice.Callback"
      wsdlURL="wsdl/timeseries.wsdl" endpointName="tss:CallbackPort"
      address="http://somehost.com:9090/CallbackService" serviceName="tss:CallbackService"/>

在我的一条路线中,我将此端点称为:

.to("cxf:bean:callbackInbound?dataFormat=PAYLOAD")

所以,现在我没有修复地址(http://somehost.com:9090/CallbackService),而是希望能够使用系统变量为不同的环境(DEV,TEST,PROD,...)配置地址。这是因为我使用JBoss 7作为camel的运行时环境,并且有一种非常简单的方法可以用JBoss添加系统变量。 有没有办法做到这一点?或者有更好的方法在不同的环境中配置cxf端点吗?

谢谢, 斯文

1 个答案:

答案 0 :(得分:0)

您可以使用properties components并像这样定义cxfEndpoint

System.setProperty("environment", "junit");

<cxf:cxfEndpoint id="routerEndpoint" address="{{router.address}}"
serviceClass="org.apache.camel.component.cxf.HelloService"/>

您可以像这样定义属性文件

router.address={{{{environment}}.router.address}}

# LOCAL SERVER
junit.router.address=junit

# LOCAL SERVER
local.router.address=local

# TEST
test.router.address=test

# PROD
prod.router.address=prod