什麼是WebService,我的理解就是將某個類中的方法發布成Web服務 供別人調用(一個方法即一個服務)。最常見的Web服務有天氣預報、手機號碼歸屬地等等。
更專業的理論知識,Google一下,你就知道~
開發Web Service的方式有很多種,如Apache axis2、apache cxf、 xfire、以及Java6
Java 6 的一個新特性就是通過簡單的annotaion將你的一個類發布成一個WebService.
本篇文章主要是介紹如何用Java編寫自己的Web服務,發布,以及調用服務。
一、編寫服務代碼:
package com.xcy;import javax.jws.WebService;/** * @author 肖純勇(Siuon) * @version 1.0 * @create 2012-7-19 下午7:28:12 *///在想要發布成WebService的類上加上註解@WebService@WebServicepublic class Java6WB {/** * 提供了一個說Hello的服務 * @return */public String sayHello(String name){return "Hello "+name;}/** * 提供了一個做加法的服務 * @param a * @param b * @return */public int add(int a,int b){return a + b;}}
二、發布服務
package com.xcy;import javax.xml.ws.Endpoint;/** * @author 肖純勇(Siuon) * @version 1.0 * @create 2012-7-19 下午7:33:27 */public class Test {public static void main(String[] args) {Endpoint.publish("http://localhost:8080/ws/Java6WB", new Java6WB());}}
運行後,開啟瀏覽器訪問:http://localhost:8080/ws/Java6WB?wsdl 可以看到:
三、通過jdk6的工具 產生用戶端代碼:
java6提供了一個wsimport.exe程式用來解析wsdl檔案產生用戶端代碼用的。(wsimport.exe在jdk\bin目錄下);
假設你已經配置了Java環境變數
wsimport -d [class檔案存放目錄] -s [源碼存放目錄] -p [包名] -keep [wsdl的URI]
在這裡,我只指明了包名和wsdl的uri,這種情況下class檔案和源碼會在包所指的目錄(其實你可以把源碼目錄指向你的工程)
四、通過產生的用戶端代碼調用Web服務
package test;import com.xcy.webservice.client.Java6WB;import com.xcy.webservice.client.Java6WBService;/** * @author 肖純勇(Siuon) * @version 1.0 * @create 2012-7-19 下午8:05:40 */public class Test {public static void main(String[] args) {//建立用戶端對象Java6WB java6wb = new Java6WBService().getJava6WBPort();//調用String result = java6wb.sayHello("Siuon");System.out.println(result);int sum = java6wb.add(1, 3);System.out.println(sum);}}
結果
Apache axis2 + Eclipse 開發 WebService