需要在apache camel cxf中设置replyTo地址

时间:2015-03-11 11:28:12

标签: cxf apache-camel ws-addressing

我需要从我的apache camel调用异步Web服务。

因为我需要从我的camel-cxf.xml传递replyTo地址,当我调用end system时。

如果我将此作为SOAP UI的标题传递给它,它对我来说很好,并且终端系统会向我发送回复" xxxx"地址。

<soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> <wsa:ReplyTo> <wsa:Address>xxxx</wsa:Address> </wsa:ReplyTo> <wsa:MessageID>urn:uuid:111342</wsa:MessageID> </soapenv:Header>

但我需要从我的代码中设置此属性。

在我的处理方法中,我完成了这个

    QName qname1=QName.valueOf("{http://www.w3.org/2005/08/addressing}ReplyTo");
    SoapHeader header1 = new SoapHeader(qname1, "xxxx");

    String requestHeader = "<wsa:ReplyTo xmlns:wsa=\"http://www.w3.org/2005/08/addressing\"> "
            + "<wsa:Address xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">xxxx</wsa:Address>"
            + "</wsa:ReplyTo>"
            + "<wsa:MessageID xmlns:wsa=\"http://www.w3.org/2005/08/addressing\">urn:uuid:111342</wsa:MessageID>";


    final List<SoapHeader> headers=new ArrayList<SoapHeader>();
      headers.add(new SoapHeader(qname1,DOMUtils.readXml(new StringReader(requestHeader)).getDocumentElement()));

    exchange.getIn().setHeader(SoapHeader.HEADER_LIST,headers);

但它没有用......任何人都可以给我一个合适的解决方案吗?

1 个答案:

答案 0 :(得分:1)

如果使用cxf,可以使用JaxWsProxyFactoryBean进行客户端调用,并添加ws寻址功能以启用ws寻址。

例如

JaxWsProxyFactoryBean factory = ...;
factory.getFeatures().add(new WSAddressingFeature());

亲切的问候, soilworker