2010-04-14 126 views
2

我已經使用spring-ws創建了一個POX客戶端(由XSD中的jaxb2生成),但是對於如何創建SOAP客戶端(從WSDL生成)感到困惑。我正在使用wsimport來生成存根,但是似乎這個步驟太過於使用spring-ws。存根實際上處理運輸,與POX客戶端一樣,彈簧處理運輸。所以,我的問題是:是否可以通過wsimport或jaxb2(如POX客戶端)生成傳輸對象,或者我在WebServiceTemplate中調用/發送什麼?來自WSDL的Spring-ws客戶端

回答

5

是的,你可以。

請確保您的XSD是從wsdl導入而不是嵌入您的wsdl。

點xjc(來自Jaxb2)在你的xsd並讓它產生你的類。

現在檢查你的模式。

如果您的請求和響應元件具有嵌入的複雜類型使用此:

RequestElement requestElement = new RequestElement(); 
ResponseElement responseElement = (ResponseElement) webServiceTemplate.marshalSendAndReceive(requestElement); 

否則(參考複雜類型)使用此:

RequestType requestType = new RequestType(); 
JAXBElement<RequestType> request = new ObjectFactory().createRequestType(requestType); 
ResponseType responseType = ((JAXBElement<ResponseType>) webServiceTemplate.marshalSendAndReceive(request)).getValue(); 

RequestElement,ResponseElement,的RequestType和的responseType當然只是例子。將它們替換爲Xjc從您的模式生成的任何類。

+0

這幫助我使用Spring WS和JAXB2來設置我的webservice客戶端。我逐字複製了那個給我導入錯誤的RequestElement和ResponseElement。事實證明,這些只是我想用的真實元素的佔位符:)也許你應該注意到這一點。 – chris 2010-12-03 13:41:13

+0

好點。謝謝 !編輯我的答案。 – 2010-12-03 14:27:11