JSR 181通過標準化一個易于學習且可以快速開發的Web服務簡單編程模型,從而刺激了對Web服務的采用。一直以來,J2EE開發人員要開發和部署Web服 務就必須把握相當多的信息。通過使用J2SE 5.0中的新增注釋功能,java軟件源代碼可以使用JSR 181注釋進行注釋,從而聲明式地定義所需的Web服務行為。這使開發人員可以將注重力集中在Web服務的應用邏輯上而無需擔心復雜的API、協議和部署 描述符。
BEA官方網站有一篇“web服務元數據簡介”,對理解JSR 181規范很有幫助。
這一節的例子和上一節的例子很相似,或者通過使用java注釋,比上一節的POJO稍微復雜了一點。不是說JSR 181節省了很多的配置信息嗎?鄙人認為可以從這個方面來理解,正常情況下,POJO假如配置到其他webservices框架下,比如axis2、Celtix、weblogic等容器中,必然需要編寫適合這些容器的配置文件,以便這些容器能夠識別這個POJO類是wenservices,并根據配置文件中的比如命名空間、參數類型、web服務的方法等信息提供web服務。而通過jsr 181規范中的定義可以自動識別這些信息,這樣這些信息不必在每個容器中所配置,這些容器通過java注釋就可以得到這些信息,所以說jsr181在這方面進行了簡化。XFire通過services.xml文件得到哪個類被定義為web服務, XFire可以通過java注釋來獲取web服務的相關信息。
好了,讓我們先寫一個帶jsr181注釋的java文件:
package com.kuaff.xfire.samples;
import javax.jws.WebMethod;
import javax.jws.WebParam;
import javax.jws.WebResult;
import javax.jws.WebService;
@WebService(name="MathService",serviceName="MathService",targetNamespace="http://www.kuaff.com/xfire/samples/MathService")
public class MathService
{
@WebMethod
@WebResult
public long add(@WebParam int p1, @WebParam int p2)
{
return p1 + p2;
}
}
這個例子中將MathService定義為web服務程序,服務名為MathService,命名空間為MathService,將add方法定義為web服務的方法,帶有兩個參數。
新聞熱點
疑難解答