2013年8月16日 星期五

【筆記】超輕量的Web Service

記得拜歐還在Java的入門等級時,有嘗試過去用Java寫一個Web Service出來,那時在網路上找Sample Code照著作,有時還跑不出來,就深深地覺得Java Web Service是個怪獸級的東東,後來工作上沒碰到,也就沒在注意它了。

最近在工作上有使用到,加上要考證照,就每天都會碰到,就發現以為要寫一堆程式才能實現的,現在幾行程式就可以弄出一個可以跑的Web Service,這多虧了JAX-WS API,很多複雜的運作,都幫我們準備好了,底下使用一個範例,只要兩支程式,就可以執行為Web Service。

package idv.bio.ws;
import javax.jws.WebService;
@WebService
public class Calculator {
public int add(int a, int b){
return a + b;
}
}
上列中,值得一提的是「@WebService」這個annotation,只要加上這個,就表示這支Java就是一個Web Service的實作類別。

再來,使用「Endpoint」這個類別來發佈:

package idv.bio.ws;
import javax.xml.ws.Endpoint;
public class CalculatorPublisher {
public static void main(String[] args){
String url = "http://localhost:1234/cal";
Endpoint.publish(url, new Calculator());
System.out.println("Calculator Service published, url: " + url);
}
}
執行「CalculatorPublisher.class」之後,在Console應該可以看到下列訊息:

2013/8/16 下午 11:24:57 com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
資訊: Dynamically creating request wrapper Class idv.bio.ws.jaxws.Add
2013/8/16 下午 11:24:57 com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
資訊: Dynamically creating response wrapper bean Class idv.bio.ws.jaxws.AddResponse
Calculator Service published, url: http://localhost:1234/cal
把「http://localhost:1234/cal?wsdl」貼到你的瀏覽器上,可以看到WSDL,它是描述Web Service相關資訊的一個XML文件,如:


使用Soup UI去驗證,結果如下:

沒有留言: