最近項目中須要用到WebService向其餘開發人員提供接口,以前對WebService只是簡單瞭解,沒有具體實現過,在網上參考了許多示例,感受不是特別詳細,出了很多問題,所以感受WebService實現起來挺麻煩的。恰好這兩天不是太忙,抽空又研究了一下WebService服務端與客戶端的實現,如今總結一下,但願對初學者有所幫助。 java
首先說明一下開發環境:Windows 7 Ultimate + JDK1.6.25 + Tomcat 6.0.18 + MyEclipse 6.5 Enterprise。 git
具體操做步驟: 測試
1.新建工程ProjectWS,如圖: ui
2.新建包:com.project.ws.client;com.project.ws.server;com.project.wsutil.iface;com.project.wsutil.imp;如圖: spa
3.在iface包中建立接口IServer,代碼以下: code
package com.project.wsutil.iface; public interface IServer { public String getMD5ForString(String str);//獲取字符串MD5值 public String caculateForInt(int iNum1,int iNum2,int iType);//兩個整型數字運算 }
4.在imp包中建立類Server並實現接口IServer,代碼以下: server
package com.project.wsutil.imp; import java.security.MessageDigest; import com.project.wsutil.iface.IServer; public class Server implements IServer { /** * 兩個整型數的四則運算 */ public String caculateForInt(int num1, int num2, int type) { int result = 0; try{ switch(type){ case 1: result = num1 + num2;//加 break; case 2: result = num1 - num2;//減 break; case 3: result = num1 * num2;//乘 break; case 4: if(num2==0){//除 return "除數不能爲0!"; }else{ result = num1 / num2; break; } default: return "請正確指定運算類型!"; } }catch(Exception e){ return "運算髮生異常:"+e.getMessage(); } return String.valueOf(result); } /** * 獲取字符串MD5值 */ public String getMD5ForString(String str) { char hexDigits[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] strByte = str.getBytes(); MessageDigest digest = MessageDigest.getInstance("MD5"); digest.update(strByte); byte[] digestByteArray = digest.digest(); int length = digestByteArray.length; char array[] = new char[length * 2]; int index = 0; for (int i = 0; i < length; i++) { byte _byte = digestByteArray[i]; array[index++] = hexDigits[_byte >>> 4 & 0xf]; array[index++] = hexDigits[_byte & 0xf]; } return new String(array); } catch (Exception e) { return "獲取字符串【"+str+"】MD5值異常:"+e.getMessage(); } } }
5.右鍵src,選擇new — Other,而後選擇WebService,如圖: 接口
6.單擊下一步,如圖: ip
7.指定接口實現類com.project.wsutil.Server.java,如圖: md5
8.右鍵工程,選擇Properties,左側選擇「Java Build Path」,而後選擇「Libraries」選項卡,如圖:
點擊「Add Library」按鈕,打開如圖對話框,
選擇「MyEclipse Libraries」,單擊「Next」,如圖,勾選JAX-WS兩個選項,而後單擊Finish,最後單擊「OK」關閉對話框。
9.如圖,展開項目,找到WEB-INF目錄下的WSDL文件並打開:
10.將工程部署到Tomcat下,並啓動Tomcat,訪問地址:http://localhost:8080/ProjectWS/WSServerPort?wsdl,出現以下圖界面,說明建立成功(此處爲什麼訪問WSServerPort而不是WSServerService有點疑惑,還望知道的朋友給點提示)。
11.右鍵Src,選擇new — Other,而後選擇WebService Client,如圖:
12.單擊下一步,如圖,選擇JAX-WS:
13.單擊「Next」,如圖,拷貝WSDL訪問路徑,並制定所生成客戶端的包路徑:
14.單擊「Next」按鈕,如圖(注:若是出現警告或錯誤提示等,請忽略),最後單擊Finish。
15.建立測試類com.project.test.Test.java,代碼以下:
package com.project.test; import com.project.ws.client.WSServerService; public class Test { public static void main(String[] args){ WSServerService service = new WSServerService(); String md5 = service.getWSServerPort().getMD5ForString("WebService"); String result = service.getWSServerPort().caculateForInt(25, 3, 3); System.out.println("【WebService】MD5值爲:"+md5); System.out.println("計算結果:25 × 3 = "+result); } }
16.最後運行Test.java,控制檯輸出以下信息:
PS:因爲本人水平有限,還望各位多提出寶貴意見。