<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    網路冷眼@BlogJava

    熙熙攘攘一閑人 以冷靜的眼光觀察技術
    posts - 88, comments - 193, trackbacks - 0, articles - 28
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    版本歷史:
    2006.12.17 發布
    2006.12.18 更正不加標準輸入流讀取字符,程序將立即退出,將不能提供服務。將程序列表的行號去掉,方便代碼粘貼。


    在前一篇文章中,講述了Java SE 6.0新特征的概觀。本文將介紹Web服務。


    當然,在進行本文之前,請首先下載Java SE 6.0,詳情請瀏覽野馬奔騰而出,Java SE 6 正式版發布

    Java Web 涉及到的JSR有 105,173,181,222,224,250。

    由于Web服務日趨流行,利用Web服務的功能性的API特征正從最新的Java EE版本中向Java SE 6平臺遷移。換言之,針對Web服務不需另外加入額外的工具,在Java EE和Java SE平臺擁有相同的API。野馬將大把不同的Web服務相關的API加到標準的工具柜中:以JSR 181針對Java 平臺的Web服務元數據,通過JSR 224的基于XML 的Web服務Java API(JAX-WS);針對Java的帶有附件的SOAP API(SAAJ)作為JSR 67

    與三個Web服務API相關的包新增到Java SE 6.0里JAX-WS API 放置到javax.xml.ws包; SAAJ類在javax.xml.soap 包; Web服務的元數據類放置在javax.jws包里。

    javax.jws

    JSR 181 及其針對Java 平臺Web服務元數據的規范提供一個在類中利用標注設計和開發Web服務的機制。標注從J2SE 5.0引入,在Java SE 6.0得到了進一步擴展。在第10章將會完整描述。但是,標注基本上允許將@tag加入到類,方法和特性來描述相關的元數據。一個解析器然后能定位標記并采取適當的行動;盡管行動什么時候發生完全依賴于標記自身。

    JAX-WS 2.0 很容易使用. 本文將介紹如何使用Java SE 6。以JAX-WS如何建立一個簡單的Web服務。首先建立一個建立一個將要作為Web服務發布的類,如表1所示:

    Java 代碼 列表1

    package  hello;

    public   class  CircleFunctions  {

       
    public   double  getArea( double  radius)  {
           
    return  java.lang.Math.PI  *  (r  *  r);
        }


       
    public   double  getCircumference( double  radius)  {
           
    return   2   *  java.lang.Math.PI  *  r;
       }

    }


    為了輸出這些方法,必需做兩件事情:引入javax.jws.WebService  包;在類的前面增加@WebService  標注以告訴Java編譯器將發布此類為Web服務。下面的代碼顯示了這種變化(以黑體顯示增加的代碼)。

    Java 代碼 列表2
    package hello;

    import javax.jws.WebService;

    @WebService

    public class CircleFunctions {
       
    public double getArea(double r) {
           
    return java.lang.Math.PI * (r * r);
        }


       
    public double getCircumference(double r) {
            
    return 2 * java.lang.Math.PI * r;
        }


    }



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

    Java 代碼 列表3

    import javax.xml.ws.Endpoint;

    public static void main(String[] args) {

          Endpoint.publish(
             
    "http://localhost:8080/WebServiceExample/circlefunctions",
             
    new CircleFunctions());
            
    try {
                System.in.read();
            }
     catch (IOException ex) {
                ex.printStackTrace();
            }

    }



    現在,用javac編譯源代碼。但是源文件能做什么呢?通過對源文件運行 javac編譯器進行編譯只是產生了class文件。并沒有產生特殊的東西。但是在編譯類之后,也需要運行wsgen 命令行工具(wsgen 是Web service generator的縮寫)。編譯源代碼后還必需完成更多的步驟:像下面一樣調用wsgen工具。

    >  wsgen –cp . hello.CircleFunctions

    Wsgen工具將在一個叫做wsgen子目錄下產生大量的源代碼,然后將這些源代碼編譯成class文件。盡管從未編輯這些文件,但是可以瀏覽這些文件。注意在使用Wsgen工具時,原始的源代碼必需在相應的包里。否則將產生錯誤。

    就這么簡單。當運行應用程序時,Java SE 6平臺擁有一個小的Web應用服務器,它將在地址為http://localhost:8080/WebServiceExample/circlefunctions 發布Web服務。通過顯示CircleFunction的WSDL 來驗證Web服務。當JVM仍然運行時,在瀏覽器輸入:


    如果在瀏覽器里看見大量描述Web服務的功能的XML代碼,那么Web服務就成功發布了。

    評論

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-18 08:22 by 壞男孩
    真的方便多了,不用webservice的框架也可以寫webservices的程序真爽!

    樓主辛苦了

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-18 09:37 by 網路冷眼[匿名]
    要不說是新特性哪!

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-18 10:50 by 緋心
    樓主,我照你的方法做了。wsgen –cp . hello.CircleFunctions之后也產生的大量的代碼。但是http://localhost:8080/WebServiceExample/circlefunctions?WSDL卻出不來,why?

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-18 21:18 by 網路冷眼
    @緋心
    對不起,原來未加標準輸入流輸入等待字符輸入,程序執行完后立即退出。文章已更正。謝謝提出問題。

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-19 21:25 by 網路冷眼
    @壞男孩
    謝謝!其實還是有框架的,只不過Java SE 6.0里帶了個小的Web服務器,就不需要笨重的Web Service的容器。有道是“簡約不簡單,殺雞焉用牛刀!”

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-25 22:10 by ws
    樓主,我的程序如下:
    package hello;


    import java.io.IOException;

    import javax.jws.WebMethod;
    import javax.jws.WebService;
    import javax.xml.ws.Endpoint;

    @WebService
    public class CircleFunctions {
    @WebMethod
    public double getArea(double r){
    return java.lang.Math.PI*(r*r);
    }
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Endpoint.publish("http://localhost:8080/WebServiceExample/circlefunctions", new CircleFunctions());
    try{
    System.in.read();
    }catch(IOException ex){
    ex.printStackTrace();
    }
    }
    }


    wsgen –cp . hello.CircleFunctions之后也產生的大量的代碼。但是http://localhost:8080/WebServiceExample/circlefunctions?WSDL卻出不來,why?
    謝謝。

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2006-12-25 22:18 by 網路冷眼@BlogJava
    然后要執行:
    >java hello.CircleFunctions
    由于有標準輸入流等待輸入,程序不會退出。在后臺WS 會一直提供服務。然后在瀏覽器里面在輸入相應的地址就OK!

    # re: 感受野馬(Mustang)性情,體會Java SE 6.0的新特性之二--Web服務  回復  更多評論   

    2007-01-03 11:50 by 交口稱贊
    客戶端的寫法
    請看偶的主頁
    http://m.tkk7.com/vip01/
    主站蜘蛛池模板: 国产亚洲精品久久久久秋霞| 日韩免费毛片视频| 67pao强力打造67194在线午夜亚洲| 成人av片无码免费天天看| 亚洲国产精品VA在线看黑人| 在线看片免费人成视频播| 亚洲综合精品一二三区在线| 免费无码中文字幕A级毛片| 中文字幕亚洲色图| 精品久久久久国产免费| 亚洲精品国产高清在线观看| 国产国产人免费人成免费视频| 一本久久免费视频| 久久久亚洲精品国产| 久久午夜夜伦鲁鲁片免费无码影视 | 亚洲色一区二区三区四区| 成人看的午夜免费毛片| 美女被爆羞羞网站在免费观看| 亚洲乱码中文字幕手机在线| 三年在线观看免费观看完整版中文| 亚洲免费精彩视频在线观看| AV无码免费永久在线观看| 国产成人亚洲综合无| 亚洲男同帅GAY片在线观看| 51视频精品全部免费最新| 亚洲综合精品伊人久久| 亚洲美日韩Av中文字幕无码久久久妻妇| a级特黄毛片免费观看| 国产亚洲sss在线播放| 亚洲一区二区三区乱码A| 91禁漫免费进入| 亚洲成在人线在线播放无码| 国产亚洲一区二区三区在线不卡| 曰批全过程免费视频网址| 国产成人亚洲精品无码AV大片 | 亚洲图片校园春色| 亚洲国产精品尤物yw在线| 99久久99热精品免费观看国产| 亚洲成AV人影片在线观看| 亚洲精品成人无限看| 天天摸天天碰成人免费视频|