【问题标题】:Call POX web service from Spring Integration从 Spring Integration 调用 POX Web 服务
【发布时间】:2017-10-05 18:07:58
【问题描述】:

我在一个项目中使用 Spring Integration,该项目集成了(成功地)各种 ReST/JSON 和 SOAP 端点。 现在我需要调用一个配置为接受 Plain-Old-Xml-over-HTTP 的 BusinessWorks 实例。 从“Spring Integration in Action book”中,我得到了一个提示,我应该为此使用 int-ws:outbound-gateway。 此配置生成正确的请求,但在 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 Integration 有效负载中没有对象的踪迹)。 谁能告诉我我做错了什么或如何实现我想要做的事情?

【问题讨论】:

    标签: spring-integration spring-ws


    【解决方案1】:

    我认为这是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 (message instanceof SoapMessage) {

    所以,我们确实错过了消息可以是不同类型的事实。

    请在这件事上打开JIRA bug

    同时,作为一种解决方法,我建议您直接使用WebServiceTemplate 而不是&lt;int-ws:outbound-gateway&gt;,您可以使用marshalSendAndReceive() 方法从&lt;service-activator&gt; 调用它进行交互。

    【讨论】:

    • 谢谢!我认为这个权威的答案结束了这个话题:-) 我已经打开了 JIRA 错误。我只是快速尝试使用该解决方法,但由于我们调用的服务是在同一家公司管理的,他们接受重新配置服务以接受 SOAP。
    • 当然! JIRA jira.spring.io/browse/INT-4355 最近已修复。如果您需要,我们可能会尽快发布下一个维护版本
    • 哦!抱歉,我错过了最后一条评论。非常感谢,但现在我们可以等待下一个版本的交付。
    猜你喜欢
    • 2019-01-02
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-29
    • 1970-01-01
    • 2013-06-06
    相关资源
    最近更新 更多