1. 程式人生 > >通過cxf JaxWsDynamicClientFactory進行WebService 客戶端呼叫

通過cxf JaxWsDynamicClientFactory進行WebService 客戶端呼叫

通過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);
		}