国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項超值服

開通VIP
JDK6的新特性之十一:更簡單,更強(qiáng)大的JAX-WS - Java天下社區(qū) - www.javatx.cn - J2SE綜合
JDK6的新特性之十一:更簡單,更強(qiáng)大的JAX-WS  

JAX-WS2.0的來歷

--------------------------------------------------------------------------------
JAX-WS(JSR-224) 是Java  Architecture  for  XML  Web  Services的縮寫,簡單說就是一種用Java和XML開發(fā)Web Services應(yīng)用程序的框架,  目前版本是2.0,  它是JAX-RPC  1.1的后續(xù)版本,  J2EE 1.4帶的就是JAX-RPC1.1,  而Java  EE  5里面包括了JAX-WS  2.0,但為了向后兼容,仍然支持JAX-RPC. 現(xiàn)在,SUN又把JAX-WS直接放到了Java  SE  6里面,由于JAX-WS會用到Common  Annotation(JSR 250),Java  Web  Services  Metadata(JSR  181),  JAXB2(JSR  222), StAX(JSR  173),  所以SUN也必須把后幾個原屬于Java  EE范疇的Components下放到Java  SE, 現(xiàn)在我們可以清楚地理解了為什么Sun要把這些看似跟Java  SE沒有關(guān)系的Components放進(jìn)來,終極目的就是要在Java SE里面支持Web  Services.

JAX-WS2.0的架構(gòu)

--------------------------------------------------------------------------------
JAX-WS不是一個孤立的框架,它依賴于眾多其他的規(guī)范,本質(zhì)上它由以下幾部分組成
1.用來開發(fā)Web  Services的Java  API
2.用來處理Marshal/Unmarshal的XML  Binding機(jī)制,JAX-WS2.0用JAXB2來處理Java Object與XML之間的映射,Marshalling就是把Java Object映射到XML,Unmarshalling則是把XML映射到Java  Object.之所以要做Java Object與XML的映射,是因為最終作為方法參數(shù)和返回值的Java Object要通過網(wǎng)絡(luò)傳輸協(xié)議(一般是SOAP)傳送,這就要求必須對Java Object做類似序列化和反序列化的工作,在SOAP中就是要用XML來表示Java  object的內(nèi)部狀態(tài)
3.眾多元數(shù)據(jù)(Annotations)會被JAX-WS用來描述Web  Services的相關(guān)類,包括Common  Annotations,  Web  Services  Metadata,  JAXB2的元數(shù)據(jù)和JAX-WS2.0規(guī)范自己的元數(shù)據(jù).
4.Annotation Processing Tool(APT)是JAX-WS重要的組成部分,由于JAX-WS2.0規(guī)范用到很多元數(shù)據(jù),所以需要APT來處理眾多的Annotations.在<JDK_HOME>/bin下有兩個命令wsgen和wsimport,就是用到APT和Compiler API來處理碰到的Annotations,wsgen可以為Web  Services Provider產(chǎn)生并編譯必要的幫助類和相關(guān)支持文件,wsimport以WSDL作為輸入為Web  Service Consumer產(chǎn)生并編譯必要的幫助類和相關(guān)支持文件.
5.JAX-WS還包括JAX-WS  Runtime與應(yīng)用服務(wù)器和工具之間的契約關(guān)系

JAX-WS2.0的編程模型

--------------------------------------------------------------------------------
現(xiàn)在用JAX-WS2.0來編寫Web  Services非常簡單,不像JAX-RPC,JAX-WS可以把任意POJO暴露為Web Services,服務(wù)類不需要實現(xiàn)接口,服務(wù)方法也沒有必要拋出RMI異常.下面介紹在JDK6環(huán)境下用JAX-WS2.0開發(fā)和測試Web Services的步驟
1.編寫服務(wù)類,并用Web  Services  Metadata(JSR-181)標(biāo)注這個服務(wù)類,我用我的另一篇BlogJDK6的新特性之十:Web服務(wù)元數(shù)據(jù)中的WSProvider類作為服務(wù)類的例子,在此我重復(fù)貼一下WSProvider類的源代碼:
/**
 *  @author  chinajash
 */
@WebService(targetNamespace="http://blog.csdn.net/chinajash",serviceName="HelloService")
public  class  WSProvider  {
       @WebResult(name="Greetings")//自定義該方法返回值在WSDL中相關(guān)的描述        
       @WebMethod
       public  String  sayHi(@WebParam(name="MyName")  String  name){
               return  "Hi,"+name;  //@WebParam是自定義參數(shù)name在WSDL中相關(guān)的描述
       }        
       @Oneway  //表明該服務(wù)方法是單向的,既沒有返回值,也不應(yīng)該聲明檢查異常
       @WebMethod(action="printSystemTime",operationName="printSystemTime")//自定義該方法在WSDL中相關(guān)的描述
       public  void  printTime(){
               System.out.println(System.currentTimeMillis());
       }
       public  static  void  main(String[]  args)  {
               Thread  wsPublisher  =  new  Thread(new  WSPublisher());
               wsPublisher.start();
       }        
       private  static  class  WSPublisher  implements  Runnable{
               public  void  run()  {
                       //發(fā)布WSProvider到http://localhost:8888/chinajash/WSProvider這個地址,之前必須調(diào)用wsgen命令
                       //生成服務(wù)類WSProvider的支持類,命令如下:
                       //wsgen  -cp  .  WebServices.WSProvider
                       Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new  WSProvider());
               }                
       }
}
2.用wsgen生成上面服務(wù)類的必要的幫助類,然后調(diào)用用EndPoint類的靜態(tài)方法publish發(fā)布服務(wù)類(步驟請參考我的另一篇Blog JDK6的新特性之十:Web服務(wù)元數(shù)據(jù)),我在這里是將服務(wù)類發(fā)布到http://localhost:8888/chinajash/WSProvider
3.用wsimport為服務(wù)消費(fèi)者(也就是服務(wù)的客戶端)生成必要的幫助類,命令如下:
wsimport  http://localhost:8888/chinajash/WSProvider?wsdl
這會在<當(dāng)前目錄>\net\csdn\blog\chinajash下生成客戶端的幫助類,在這個例子中會生成7個類
HelloService.class
ObjectFactory.class
package-info.class
PrintSystemTime.class
SayHi.class
SayHiResponse.class
WSProvider.class
4.在客戶端用下面代碼即可調(diào)用步驟1定義的Web  Service
HelloService  hs  =  new  HelloService();
WSProvider  ws  =  hs.getWSProviderPort();
System.out.println(ws.sayHi("chinajash"));
ws.printSystemTime();
調(diào)用上述代碼后客戶端控制臺輸出
hi,chinajash
服務(wù)端控制臺輸出服務(wù)器當(dāng)前系統(tǒng)時間
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務(wù)
JAX-WS2.0規(guī)范--第一章
JSR224-JAX-WS2.0
WebService CXF學(xué)習(xí)(進(jìn)階篇2):JAX-WS講解
20101028星期四
JSR 349和339規(guī)范通過審查,確定加入Java EE 7
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服