我如何使用Apache Camel调用一个空消息体的SOAP Web服务?
例如,路由的最终端点将是调用我的代理服务器上的一个方法,该方法需要0个参数。
EDIT:
xml配置的例子。
<route id="someRoute">
<from uri="ref:activemq-queue"/>
<setHeader headerName="operationName">
<constant>invoke</constant>
</setHeader>
<to uri="cxf:bean:someWS"/>
</route>
...
<cxf:cxfEndpoint id="someWS" address="${ws.address}"
serviceClass="com.example.ws.SomeWS"
问题是WS上的 "invoke "方法需要0个参数 然后就会出现一个异常,说正在接收1个参数。有没有办法让我指定忽略这个接收到的输入?
你可以将消息体设置为空,如果调用只需要0个参数的话。null简单表达式是从camel 2.12.3开始添加的。
<route id="someRoute">
<from uri="ref:activemq-queue"/>
<setBody>
<simple>null</simple>
</setBody>
<setHeader headerName="operationName">
<constant>invoke</constant>
</setHeader>
<to uri="cxf:bean:someWS"/>
</route>
我也需要给Apache Camel xml设置一个空的body,下面的解决方案对我来说是可行的。
<setBody id="set-empty-body">
<constant/>
</setBody>
希望对需要的人有帮助。