WebService學習筆記系列之三----通過javax.xml.ws.Service的方式呼叫WebService
在上一篇《WebService學習筆記系列之二----通過wsimport的方式呼叫WebService》文章中講解了通過wsimport的方式呼叫WebService。本文章學習使用javax.xml.ws.Service類來呼叫WebService。下面貼出呼叫的程式碼
import java.net.MalformedURLException; import java.net.URL; import javax.xml.namespace.QName; import com.opertion.wsimport.HiService; /** * 使用Service類進行呼叫 * @author Administrator */ public class Service { public static void main(String[] args) throws MalformedURLException { //wsdl網路路徑 URL url = new URL("http://localhost:8090/hi/sayHi?wsdl"); //服務描述中服務端點的限定名稱 兩個引數分別為 名稱空間 服務名 QName qName = new QName("http://com.sc.ws", "HiService"); //建立服務物件 javax.xml.ws.Service service = javax.xml.ws.Service.create(url, qName); //獲得Hiservice的實現類物件 HiService hiService = service.getPort(new QName("http://com.sc.ws","HiServicePort"),HiService.class); //呼叫WebService方法 System.out.println(hiService.sayHi("xiaoming")); } }
在上述中的名稱空間、服務名等是從哪裡得到的呢?下面貼出一張圖說明:
圖中1為名稱空間、2為限定名的本地部分 3為服務埠
需要注意的是在上述的呼叫WebService過程中存在一個HiService介面。Hiservice介面是怎麼來的呢?其實它還是通過wsimport的方法生成處理來的。在使用wsimport方式的時候會生成一個服務介面類,在這次的呼叫中需要使用到它。
其實通過wsimport方式和上述的方式本質是完全一樣的。wsimport就是封裝過上述的呼叫方式。