通過cxf JaxWsDynamicClientFactory進行WebService 客戶端呼叫
阿新 • • 發佈:2019-01-23
通過JaxWsDynamicClientFactory進行WebService 客戶端呼叫的一個好處就是隻需要知道了WSDL地址就行了,不需要手動生成任何程式碼,這樣,如果需要呼叫多個WebService服務的話,只需要建立多個Client即可,不用考慮傳統方式(生成程式碼)衝突問題,這樣可以讓程式碼更優雅。
下面給出步驟
首先整合相關jar包,在POM檔案中新增如下依賴
<!-- cxf Web Service --> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-frontend-jaxws</artifactId> <version>3.1.10</version> </dependency> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-transports-http</artifactId> <version>3.1.10</version> </dependency>
然後java程式碼如下:
JaxWsDynamicClientFactory clientFactory = JaxWsDynamicClientFactory.newInstance(); Client client = clientFactory.createClient(webserviceAddress); Object[] result = null; try { //如果有名稱空間的話 QName operationName = new QName(namespaceURI,localPort); //如果有名稱空間需要加上這個,第一個引數為名稱空間名稱,第二個引數為WebService方法名稱 result = client.invoke(operationName,param1, param2);//後面為WebService請求引數陣列 //如果沒有名稱空間的話 result = client.invoke(operationName, param1); //注意第一個引數是字串型別,表示WebService方法名稱,第二個引數為請求引數 } catch (Exception e) { String errMsg = "WebService發生異常!"; result = new Object[] { errMsg }; logger.error(errMsg, e); }