首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Spring集成调用POX web服务

从Spring集成调用POX web服务
EN

Stack Overflow用户
提问于 2017-10-05 18:07:58
回答 1查看 149关注 0票数 1

我在一个项目中使用Spring,该项目集成(成功)了各种ReST/JSON和SOAP端点。现在,我需要调用一个BusinessWorks实例,该实例被配置为接受平原-over。从“”中,我得到了一个提示,即我应该使用int-ws:outbound gateway来实现这一点。此配置生成正确的请求,但在SOAP中:

代码语言:javascript
复制
<int-ws:outbound-gateway
    uri="..."
    request-channel="request" reply-channel="reply"
    marshaller="marshaller" unmarshaller="unmarshaller"/>

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

代码语言:javascript
复制
<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,但是请求的主体是空的(有效负载中没有对象的跟踪)。有人能告诉我我做错了什么,或者如何实现我想做的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-05 18:58:26

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

代码语言:javascript
复制
 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虫关于这件事。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46592176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档