一、准备工作
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的任何一个方法。