Spring integration 从Spring集成调用web服务

Spring integration 从Spring集成调用web服务,spring-integration,spring-ws,Spring Integration,Spring Ws,我正在一个项目中使用Spring集成,该项目成功地集成了各种ReST/JSON和SOAP端点。 现在我需要调用一个BusinessWorks实例,该实例被配置为通过HTTP接受普通的旧Xml。 从“SpringIntegrationinAction”一书中,我得到了一个提示,我应该使用intWS:OutboundGateway来实现这一点。 此配置生成正确的请求,但在SOAP中: <int-ws:outbound-gateway uri="..." request-chan

我正在一个项目中使用Spring集成,该项目成功地集成了各种ReST/JSON和SOAP端点。 现在我需要调用一个BusinessWorks实例,该实例被配置为通过HTTP接受普通的旧Xml。 从“SpringIntegrationinAction”一书中,我得到了一个提示,我应该使用intWS:OutboundGateway来实现这一点。 此配置生成正确的请求,但在SOAP中:

<int-ws:outbound-gateway
    uri="..."
    request-channel="request" reply-channel="reply"
    marshaller="marshaller" unmarshaller="unmarshaller"/>

我不知道如何配置它,将有效负载中的对象作为POX(无SOAP信封)发送。 我试过这个:

<int-ws:outbound-gateway
    uri="..."
    request-channel="request" reply-channel="reply"
    marshaller="marshaller" unmarshaller="unmarshaller"
    message-factory="poxMessageFactory"/>
<bean id="poxMessageFactory"
    class="org.springframework.ws.pox.dom.DomPoxMessageFactory"/>

请求似乎只正确地切换到XML,但请求体是空的(Spring集成负载中没有对象的痕迹)。
有人能告诉我我做错了什么,或者如何实现我想要做的吗?

我认为这是
AbstractWebServiceOutboundGateway
中的一个遗漏:

 public void doWithMessage(WebServiceMessage message) throws IOException, TransformerException {
        Object payload = this.requestMessage.getPayload();
        if (message instanceof SoapMessage) {
            this.doWithMessageInternal(message, payload);
            AbstractWebServiceOutboundGateway.this.headerMapper
                    .fromHeadersToRequest(this.requestMessage.getHeaders(), (SoapMessage) message);
            if (this.requestCallback != null) {
                this.requestCallback.doWithMessage(message);
            }
        }

    }
注意
if(SoapMessage的消息实例){

因此,我们确实忽略了信息可以是不同类型的事实

请打开这件事


同时,作为一种解决方法,我建议您直接使用
WebServiceTemplate
而不是
,您可以使用
MarshalSendReceive()从
调用它
交互方法。

谢谢!我想这个权威的答案结束了这个话题:-)我打开了JIRA错误。我只是快速尝试使用解决方法,但由于我们调用的服务是在同一家公司管理的,他们接受重新配置服务以接受SOAP。当然!JIRA最近已经修复。我们可能会重新配置如果您需要,请尽快租赁下一个维护版本!很抱歉,我错过了最后一条评论。非常感谢,但现在我们可以等待下一个版本的交付。