2014-01-29 94 views
0

我還是Spring Integration的新手,我幾乎沒有問題。Spring集成調用Web服務

我有在Tomcat服務器WSDL部署服務。

我希望將彈簧集成流的參數發送到該服務,並接收 響應,以便在流中執行下一步操作。

我應該使用出站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中調用服務。

就我而言,你認爲哪種方式更好? 我還想知道如何通過使用ws:outbound-gateway解決此問題。

謝謝。

回答

1

只要它是SOAP,那麼你就可以處理XML。您的WSDL爲您提供合同 - 一種XSD,應該將XML發送給服務,並將作爲響應返回。

因此,您的任務是配置<int-ws:outbound-gateway>並將正確的XML作爲消息​​提供給該組件的request-channel

同樣是有關響應:你得到一個XML作爲​​。

但是,它是簡單 WS出站網關。您可以使用marshaller對其進行配置,並將其發送到request-channel某個域POJO,並且marshaller會將該POJO轉換爲SOAP請求的XML表示形式。

顯示,你的配置,請,也許我們可以幫助更多與concreate問題。

+0

謝謝你的迴應。我在主題帖子中完成了更新配置。 – user3205788

+0

如果你沒有足夠的時間,可以繼續進行代碼生成並使用通用的''。否則,你需要研究什麼是'Contract First'以及Spring WS如何實現它。 Spring Integration WS模塊完全基於Spring WS項目。 –

+0

再次感謝你,代碼生成方式工作正常,我也會按照你的建議學習Spring WS。 – user3205788