Java 驼峰代理web服务返回一个空soap信封
我正在使用Camel代理一个web服务(我需要首先修改soap头)。我正在使用CXF_消息数据格式,因为它允许我轻松地更改soap头。 使用soapui发送soap消息效果很好,我可以看到它到达真正的Web服务,但是,响应总是一个空的soap信封?当我切换到消息dataformat时,响应是正确的(但是我不能更改SOAP头) 我做错了什么?为什么数据格式会改变输入/输出行为Java 驼峰代理web服务返回一个空soap信封,java,cxf,apache-camel,Java,Cxf,Apache Camel,我正在使用Camel代理一个web服务(我需要首先修改soap头)。我正在使用CXF_消息数据格式,因为它允许我轻松地更改soap头。 使用soapui发送soap消息效果很好,我可以看到它到达真正的Web服务,但是,响应总是一个空的soap信封?当我切换到消息dataformat时,响应是正确的(但是我不能更改SOAP头) 我做错了什么?为什么数据格式会改变输入/输出行为 <cxf:cxfEndpoint id="broker"> ... </cxf:cxfEnd
<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>
...
据我所知,根本没有这样的CXF\u消息
数据格式。有POJO
(默认值)、有效载荷
和消息
。使用消息
数据格式,您将无法处理任何SOAP
——此模式适用于无SOAP
处理
为了处理SOAP
标题,您需要指定有效负载
数据格式。然后您将能够处理SOAP
标题。检查如何执行此操作注意:在这个链接中,路由是通过Java代码完成的。为了通过Spring实现这一点,您必须创建自己的URI,然后从URI将消息转发到自定义处理器,修改头并将其发送回真正的端点
另请参见:
转发到您的驼峰bean:
然后转发到真正的ws.Oops忘了删除我的处理器,这导致了classcast。当我移除处理器并使用有效负载时,我总是得到一个HTTP操作调用失败,statusCode:500作为响应。(我使用SoapMock来测试我的设置,因此使用了“mockBinding”。现在两个端点都是骆驼cxf bean,使用dataformat负载。请求仍然正确到达,响应现在是soap错误,消息为“无法解析流”。)。(soap头转换没有问题,暂时删除了它,只是希望基本的请求/响应交换工作)解决了,SoapUI使用gzip压缩响应:。尽管如此,仍然希望让它与CXF_消息一起工作,但至少我现在有一个工作选项。