最近项目中须要用到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:因为本人水平有限,还望各位多提出宝贵意见。