感受野馬(Mustang)性情,體會(huì)Java SE 6.0的新特性之二--Web服務(wù)
Posted on 2006-12-17 22:44 網(wǎng)路冷眼@BlogJava 閱讀(4654) 評(píng)論(8) 編輯 收藏 所屬分類: Java 、Java SE
版本歷史:
2006.12.17 發(fā)布
2006.12.18 更正不加標(biāo)準(zhǔn)輸入流讀取字符,程序?qū)⒘⒓赐顺觯瑢⒉荒芴峁┓?wù)。將程序列表的行號(hào)去掉,方便代碼粘貼。
在前一篇文章中,講述了Java SE 6.0新特征的概觀。本文將介紹Web服務(wù)。
當(dāng)然,在進(jìn)行本文之前,請(qǐng)首先下載Java SE 6.0,詳情請(qǐng)瀏覽野馬奔騰而出,Java SE 6 正式版發(fā)布 。
Java Web 涉及到的JSR有 105,173,181,222,224,250。
由于Web服務(wù)日趨流行,利用Web服務(wù)的功能性的API特征正從最新的Java EE版本中向Java SE 6平臺(tái)遷移。換言之,針對(duì)Web服務(wù)不需另外加入額外的工具,在Java EE和Java SE平臺(tái)擁有相同的API。野馬將大把不同的Web服務(wù)相關(guān)的API加到標(biāo)準(zhǔn)的工具柜中:以JSR 181針對(duì)Java 平臺(tái)的Web服務(wù)元數(shù)據(jù),通過(guò)JSR 224的基于XML 的Web服務(wù)Java API(JAX-WS);針對(duì)Java的帶有附件的SOAP API(SAAJ)作為JSR 67 。
與三個(gè)Web服務(wù)API相關(guān)的包新增到Java SE 6.0里:JAX-WS API 放置到javax.xml.ws包; SAAJ類在javax.xml.soap 包; Web服務(wù)的元數(shù)據(jù)類放置在javax.jws包里。
javax.jws 包
JSR 181 及其針對(duì)Java 平臺(tái)Web服務(wù)元數(shù)據(jù)的規(guī)范提供一個(gè)在類中利用標(biāo)注設(shè)計(jì)和開(kāi)發(fā)Web服務(wù)的機(jī)制。標(biāo)注從J2SE 5.0引入,在Java SE 6.0得到了進(jìn)一步擴(kuò)展。在第10章將會(huì)完整描述。但是,標(biāo)注基本上允許將@tag加入到類,方法和特性來(lái)描述相關(guān)的元數(shù)據(jù)。一個(gè)解析器然后能定位標(biāo)記并采取適當(dāng)?shù)男袆?dòng);盡管行動(dòng)什么時(shí)候發(fā)生完全依賴于標(biāo)記自身。
JAX-WS 2.0 很容易使用. 本文將介紹如何使用Java SE 6。以JAX-WS如何建立一個(gè)簡(jiǎn)單的Web服務(wù)。首先建立一個(gè)建立一個(gè)將要作為Web服務(wù)發(fā)布的類,如表1所示:
Java 代碼 列表1














javax.jws.WebService
包;在類的前面增加@WebService
標(biāo)注以告訴Java編譯器將發(fā)布此類為Web服務(wù)。下面的代碼顯示了這種變化(以黑體顯示增加的代碼)。


















在此,有兩個(gè)基本的標(biāo)注:@WebService和@WebMethod。@WebService標(biāo)注指明HelloService 類作為Web服務(wù)。如果沒(méi)有制定,標(biāo)注的名稱就是類的名稱。也能制定命名空間,服務(wù)名,WSDL 位置和endpoint 接口等。在指定的上下文環(huán)境中,可以使用javax.xml.ws.Endpoint類的
publish()
靜態(tài)方法發(fā)布上面的類作為Web服務(wù)。代碼見(jiàn)列表3:















現(xiàn)在,用javac編譯源代碼。但是源文件能做什么呢?通過(guò)對(duì)源文件運(yùn)行 javac編譯器進(jìn)行編譯只是產(chǎn)生了class文件。并沒(méi)有產(chǎn)生特殊的東西。但是在編譯類之后,也需要運(yùn)行wsgen 命令行工具(wsgen 是Web service generator的縮寫(xiě))。編譯源代碼后還必需完成更多的步驟:像下面一樣調(diào)用wsgen工具。
就這么簡(jiǎn)單。當(dāng)運(yùn)行應(yīng)用程序時(shí),Java SE 6平臺(tái)擁有一個(gè)小的Web應(yīng)用服務(wù)器,它將在地址為http://localhost:8080/WebServiceExample/circlefunctions
發(fā)布Web服務(wù)。通過(guò)顯示CircleFunction的WSDL 來(lái)驗(yàn)證Web服務(wù)。當(dāng)JVM仍然運(yùn)行時(shí),在瀏覽器輸入:
如果在瀏覽器里看見(jiàn)大量描述Web服務(wù)的功能的XML代碼,那么Web服務(wù)就成功發(fā)布了。