標籤:java webservice   讀寫redis資料庫   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
Java WebService 實現讀寫Redis資料庫