1. 程式人生 > >WebService技術,服務端and客戶端JDK-wsimport工具(一)

WebService技術,服務端and客戶端JDK-wsimport工具(一)

get png pub keep image 圖形化 als ava 名稱

使用webservice服務,需要了解幾個名詞:soap 簡單對象協議、http+xml 、 WSDL

先看下代碼結構:

技術分享圖片

服務端代碼與客戶端代碼分別處於兩不同的包中

一、服務端內容

服務端:

@WebService註解,表明這個一個對外提供為webservice的服務類。

@WebMethod註解,表明這是webservice中的一個可以調用的方法。

還可以設置其他註解,(註解會在wsdl文檔中體現出來)。

WebServiceImp.java代碼:
 1 package com.webservice;
 2 
 3 import javax.jws.WebMethod;
4 import javax.jws.WebService; 5 import javax.xml.ws.Endpoint; 6 @WebService 7 public class WebServiceImp { 8 @WebMethod 9 public String getInfo(String id){ 10 String info=""; 11 if (id.equals("1")) { 12 info="張三"; 13 }else if (id.equals("2")) {
14 info="李四"; 15 }else if(id.equals("3")){ 16 info="王五"; 17 }else if(id.equals("4")) { 18 info="趙六"; 19 }else { 20 info="用戶不存在"; 21 } 22 return info; 23 } 24 public static void main(String[] args) {
25 Endpoint.publish("http://127.0.0.1:8080/WebService", new WebServiceImp()); 26 } 27 }

1、 在main方法中使用 Endpoint.publish(url,object)來發布wsdl.代碼中發布webservice的地址是:http://127.0.0.1:8080/WebService,把地址復制到瀏覽器地址欄我們在後面加上?wsdl,可以看到如下內容:

技術分享圖片

2、此時證明webservice已經發布成功。

發布成功後,使用軟件測試,是否請求訪問得到結果。此處使用SoapUI Pro ,圖形化界面,容易測試,新建項目,項目名稱隨意,inital wsdl:填入在代碼生成的地址

(http://127.0.0.1:8080/WebService?wsdl)。填入參數,點擊綠色的三角形發送請求,右邊出現拿到結果,說明此webservice是可用的,至此,服務端完成。

技術分享圖片

二、客戶端內容

1、使用jdk自帶的工具,能夠生成客戶端代碼。找到安裝JDK的bin目錄,就可以看到所使用的工具

技術分享圖片

wsimport的常用命令有:

①. -d <directory> 在指定的目錄生成class文件 ②. -clientjar <jarfile> 在當前目錄生成jar文件,結合-d <directory>可以在指定的目錄生成jar文件 ③. -s <directory> 在指定的目錄生成java源文件 ④. -p <pkg> 指定生成文件的包結構 ⑤. -keep 在生成class文件,或者jar包時,同時保留java源文件 2、打開cmd命令行進入到src的目錄下,執行生成代碼命令

技術分享圖片

3、看到已經生成了java和class文件,回到開發工具刷新一下,可以看到剛才生成的Java文件,

技術分享圖片

4、看wsdl文檔的時候,最好是從下往上看,這樣會比較清晰一點。wsimport根據wsdl文檔內容生成代碼,使用生成的代碼,編寫客戶端代碼,新建一個MyClient.java

 1 package webservice;
 2 
 3 public class WebClient {
 4     public static void main(String[] args) {
 5         ServiceIntService serviceIntService=new ServiceIntService();
 6         ServiceInt ServiceInt =serviceIntService.getServiceIntPort();
 7         System.out.println(ServiceInt.getInfo("1"));
 8         System.out.println(ServiceInt.getInfo("2"));
 9         System.out.println(ServiceInt.getInfo("4"));
10         System.out.println(ServiceInt.getInfo("100"));
11     }
12 }

技術分享圖片

5、運行MyClient,看到調用服務端的提供的服務,返回結果。

技術分享圖片

WebService技術,服務端and客戶端JDK-wsimport工具(一)