Spring Integration调用Web服务

时间:2014-01-29 05:50:08

标签: spring spring-integration

我还是Spring Integration的新手,我几乎没有问题。

我在tomcat服务器上部署了WSDL服务。

我想从我的spring集成流程中将参数发送到该服务并接收 回应回流做下一件事。

我应该使用出站WS网关来做到这一点吗? 以及如何配置xml来执行此操作?

我试过温度示例,但仍然不理解。

谢谢。

/////////////////////////////////////////////// ////////////////

这是我的配置:

     <int:gateway service-interface="com.app.service.IRequester" id="IRequester"
    default-request-channel="requestChannel"  
    default-reply-channel="responseChannel"
    error-channel="errorChannel" >
 </int:gateway>

 <int:service-activator input-channel="requestChannel" id="bu1"
     ref="BU1" method="bu1Method"
     output-channel="buChannel">
</int:service-activator>

 <int:service-activator input-channel="errorChannel" 
      ref="handlerError" method="errorReturnToGateway"
      output-channel="responseChannel" >
  </int:service-activator>

 <int:router id="routingChannel" input-channel="buChannel" ref="RoutingChannel"     method="routingChannel">
     <int:mapping value="firstChannel" channel="channelFirst" />
     <int:mapping value="otherChannel" channel="channelOther" />
 </int:router>

 <int:service-activator id="firstBU" input-channel="channelFirst"
        ref="FirstBU" method="doSomething" output-channel="responseChannel">
 </int:service-activator>
 <int:service-activator id="otherBU" input-channel="channelOther"
        ref="OtherBU" method="doSomething" output-channel="responseChannel">
 </int:service-activator>

我需要从firstBU和otherBU激活器更改输出通道以调用Web服务,该服务向该服务发送一个paremeter(paremeter类型为Hashmap)并接收相同类型的响应。

我不知道如何通过使用ws:outbound-gateway来调用Web服务。因为我只知道通过生成客户端java类使用java方式调用Web服务,并且我可能会在方法doSomething中调用service。

就我而言,你认为哪种方式更好? 我仍然想知道如何通过使用ws:outbound-gateway来解决这个问题。

谢谢你。

1 个答案:

答案 0 :(得分:1)

就SOAP而言,您可以处理XML。并且您的WSDL为您提供合同 - 一个XSD,XML应该发送到服务,并作为响应返回。

因此,您的任务是配置<int-ws:outbound-gateway>并将正确的XML作为消息payload提供给该组件的request-channel

回复也是如此:您获得的XML为payload

但是,它适用于简单 WS出站网关。您可以使用marshaller对其进行配置,并向request-channel某个域POJO发送,marshaller负责将该POJO转换为SOAP请求的XML表示。

请显示您的配置,也许我们可以帮助您解决更多问题。