骆驼代理的Web服务返回一个空的肥皂信封

时间:2013-02-08 09:08:14

标签: java cxf apache-camel

我正在使用Camel来代理web服务(我需要先修改soap标头)。我正在使用CXF_MESSAGE数据格式,因为这样我可以轻松更改soap标头。 使用soapui发送soap消息工作正常,我可以看到它到达真正的web服务,但是,响应总是一个空的肥皂信封?当我切换到MESSAGE数据格式时,响应是正确的(但是我无法更改SOAP标头)。

我做错了什么?为什么数据格式会改变输入/输出行为?

<cxf:cxfEndpoint id="broker">
      ...
</cxf:cxfEndpoint>

<camelContext id="camelContext" xmlns="http://camel.apache.org/schema/spring">
    <endpoint id="realWS" uri="http://localhost:8080/service?throwExceptionOnFailure=true" />

    <route>
        <from uri="cxf:bean:broker?dataFormat=CXF_MESSAGE" />
        <to ref="realWS" />
    </route>        
</camelContext>

1 个答案:

答案 0 :(得分:2)

据我所知,根本没有这种CXF_MESSAGE数据格式。有POJO(默认值),PAYLOADMESSAGE。使用MESSAGE数据格式,您将无法处理任何SOAP - 此模式适用于无SOAP处理。

要处理SOAP标头,您需要指定PAYLOAD数据格式。然后,您就可以处理SOAP标头了。检查here如何执行此操作。 注意:在此链接中,路由是通过Java代码完成的。为了通过Spring执行此操作,您必须创建自己的Processor,然后从URI将您的消息转发到自定义处理器,修改标头并将其发送回真实端点。

另见: