一、准备工作
1、MyEclipse10
2、JDK 1.7.0
3、apache-tomcat-6.0.13
二、创建服务端
1、创建【Web Service Project】,命名为【TheService】。
2、创建【Class】类,命名为【ServiceHello】,位于【com.wty.service】包下。
3、编写供客户端调用的方法,即编译方法代码。
package com.wty.service; import javax.jws.WebService;//包别引用错了 import javax.xml.ws.Endpoint; import redis.clients.jedis.Jedis; import redis.clients.jedis.Transaction; @WebService //注解别忘记加了 public class ServiceHello { /** * 下面这些方法为客户端调用的方法,方法名任意命令即可 */ public String getValue(String name){ return "我叫:"+name; } private Jedis jedis;// 非切片客户端连接 public void startRedis() { jedis = new Jedis("127.0.0.1", 6379); } /** * String读写操作 * * @param key * @return */ public String get(String key) { String getStr = jedis.get(key); return getStr; } public String set(String key, String value) { String setStr = jedis.set(key, value); return setStr; } /** * hash读写操作 * * @param hash * @param key * @return */ public String hash_get(String key, String field) { String getStr = jedis.hget(key, field); return getStr; } public Long hash_set(String key, String field, String value) { Long setStr = jedis.hset(key, field, value); return setStr; } /** * hincrby增值操作 * * @param key * @param field * @param value * @return */ public Long hincre(String key, String field, int value) { Long incrStr = jedis.hincrBy(key, field, value); return incrStr; } /** * multi事务操作 * * @return */ public Transaction multi() { Transaction tranOpera = jedis.multi(); return tranOpera; } /** * 清0操作 * @return */ public String flushDB() { String flushOpera = jedis.flushDB(); return flushOpera; } /** * 选择数据库 * @param index * @return */ public String selectDB(int index) { String selectOpera = jedis.select(index); return selectOpera; } public static void main(String[] args) { // 下面这句很重要,用于发布服务端,建议用8080端口,因为tomcat默认为8080, Endpoint.publish("http://219.245.72.20:8080/Service/ServiceHello", new ServiceHello()); System.out.println("service success!"); } }
4、进行tomcat部署
如果只在本机测试,就不用部署到tomcat中了,直接编译服务端程序即可。部署到tomcat中是为了让非本机访问webService。
5、挂起tomcat,并测试是否成功启动tomcat
6、进行服务端工程编译
说明:编译失败的话,请将该项目引用的jdk设置更高版本
编译成功。
7、测试结果
测试地址:http://219.245.72.20:8080/Service/ServiceHello?wsdl
三、生成客户端
客户端负责调用刚建立的webService,谁要调用,在谁的机子上建立。
1、创建【Web Service Project】,命名为【TheClient】。
此时TheClient工程为空。
2、命令提示窗口执行生成命令。
格式:wsimport -s "src目录" -p “生成类所在包名” -keep
“wsdl发布地址”
示例:
wsimport -s f:\\Workspaces\\TheClient\\src -p com.wty.client -keep http://219.245.72.20:8080/Service/ServiceHello?wsdl
说明:
1)"src目录"地址不可含空格
2)“wsdl发布地址”不要漏了“?wsdl”
解决如下:
3、刷新TheClient项目,检查自动生成类(其中带有Response后缀的java文件就是服务端的方法)
四、最终测试
1、创建【Class】类,命名为【ServiceTest】,位于【com.wty.test】包下。
2、编写测试方法,调用服务端方法,并打印返回的结果。
package com.wty.test; import com.wty.client.ServiceHello; import com.wty.client.ServiceHelloService; public class ServiceTest { /** * @param args */ public static void main(String[] args) { ServiceHello hello = new ServiceHelloService().getServiceHelloPort(); hello.startRedis(); String result = hello.get("1011"); System.out.println(result); } }
由于调用服务端的读写Redis服务器的方法,比如get("1011")方法,
这里记得要开Redis服务器
只要在一个局域网里,其他机子也可以访问调用上述webService的任何一个方法。
五、引用参考
http://www.iteye.com/topic/1135747