从camel cxf组件

时间:2015-08-05 07:44:14

标签: apache-camel

我是骆驼的新手,我正在尝试使用camel cxf组件来创建一个soap webservice。我从骆驼的样本开始。我使用cxf组件配置了一个路由,并添加了一个处理器来处理请求。我收到了用于处理服务的bean中的请求,但我无法将响应发送回客户端。提前致谢

这是我使用的路线:

<route>
<from uri="cxf:bean:orderEndpoint" />
<setExchangePattern pattern="InOut"/>
<to uri="bean:productService" />
</route>

这是我配置的cxf端点,

<cxf:cxfEndpoint id="orderEndpoint"
                   address="/"
                   serviceClass="camelws.ws.ProductService"/>

这是我使用的bean:

   @Service("productService")
public class ProductServiceImpl {
    public Product getProducts(){
        System.out.println("Inside webservices method....");
        Product product = new Product();
        product.setName("test product");
        product.setPrice("3242");
        return product;
    }

}

Sysout语句打印在控制台上,但我得到一个空体的肥皂响应。

下面是我从浏览器点击http://localhost:9080/ /时的回复:

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
<soap:Body/>
</soap:Envelope>

2 个答案:

答案 0 :(得分:2)

您应该实施Processor,拦截并使用以下内容处理您的消息:

public class MyProcessor implements Processor {
  public void process(Exchange exchange) throws Exception {
    ...
    // Set your response here
    exchange.getOut().setBody(product);
  }
}

然后在您的路线中引用您的处理器。

答案 1 :(得分:0)

您的回复就是你的死记硬币结束后你的路线体内的反应,所以你必须在路线结束前创建你的massege响应对象。