Spring integration 从Spring集成调用web服务
我正在一个项目中使用Spring集成,该项目成功地集成了各种ReST/JSON和SOAP端点。 现在我需要调用一个BusinessWorks实例,该实例被配置为通过HTTP接受普通的旧Xml。 从“SpringIntegrationinAction”一书中,我得到了一个提示,我应该使用intWS:OutboundGateway来实现这一点。 此配置生成正确的请求,但在SOAP中: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
<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最近已经修复。我们可能会重新配置如果您需要,请尽快租赁下一个维护版本!很抱歉,我错过了最后一条评论。非常感谢,但现在我们可以等待下一个版本的交付。