Java WebService 实现读写Redis数据库

一、准备工作

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

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。