apache camel web服务客户端

时间:2015-04-13 07:01:19

标签: java web-services apache-camel

我在camel-context.xml内创建了端点和路线,如下所示:

<cxf:cxfEndpoint id="testEndpoint" address="https://127.0.0.1:443/ws"
            serviceClass="pl.test.ws.testWsImpl"
            wsdlURL="/META-INF/wsdl/testCFService.wsdl"
            endpointName="s:test_Port"
            serviceName="s:testDescriptor"
            xmlns:s = "test.namespace"/>
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
       <route>
         <from uri="direct://start" />
         <to uri="cxf:bean:testEndpoint" />
       </route>
    </camelContext>

然后我尝试通过创建ProducerTemplate

来调用此Web服务
@Produce(uri="direct:start")
    ProducerTemplate pt;

并向其发送消息:

pt.send(new Processor() {
  public void process(Exchange exchange_) throws Exception {
    TestRequest test = new TestRequest();
    test.setRequest("hello world");
    exchange_.getIn().setBody(test);
    System.out.println(exchange_.getOut().getBody());
}});

我已WebService本地启动并运行,因此我可以看到请求正在发送,因为它正在接收,但我不知道如何处理响应。

System.out.println(exchange_.getOut().getBody());发送null作为回应时,

WebService返回Received值。

有人可以告诉我如何处理来自Exchange的回复吗?

1 个答案:

答案 0 :(得分:1)

回复来自pt.send返回的内容。

流程方法仅用于配置请求方法。没有得到答复。回复来自pt.send返回的内容。

Exchange reply = pt.send(...)

还要注意OUT vs IN,请参阅此常见问题解答 http://camel.apache.org/using-getin-or-getout-methods-on-exchange.html