如何从camel esb中的Exchange对象中提取值

时间:2014-01-02 09:46:09

标签: apache-camel fuseesb jbossfuse

我创建了一个简单的cxf Web服务。以下是肥皂消息的主体

 <soapenv:Body>
      <bean:getRTOEmployeeSalary>
         <!--Optional:-->
         <bean:arg0>sdf</bean:arg0>
      </bean:getRTOEmployeeSalary>
   </soapenv:Body>

我的要求是在我的camel上下文文件中提取arg0的值。即我想记录arg0的值。请帮帮我

    <route routePolicyRef="loggingInInterceptor">
        <from uri="cxf:bean:rtoemplyeeService"/>
        <setHeader headerName="exchange">
            <spel>${exchange}</spel>
        </setHeader>
        <log message="value of arg0======== "/>
        <convertBodyTo type="java.lang.String" id="stringInput"/>
        <bean ref="rtoEmpBean" method="getRTOEmployeeSalary" beanType="rtoEmpBean" id="govtRTOEmp"/>
    </route>

我需要在这里使用arg0的值。

1 个答案:

答案 0 :(得分:0)

我们可以使用camel提供的spring表达式语言从交换对象中提取值。由于交换对象也驻留在弹簧容器中。 下面将是代码src,用于在camel context中提取arg0的值 -

<setHeader headerName="arg0">
        <spel>#{exchange.in.body.get(0)}</spel>
</setHeader>

这将在名为arg0的标头中设置soap消息的arg0值。 http://camel.apache.org/spel.html