<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/
    主站蜘蛛池模板: 2022久久国产精品免费热麻豆| eeuss影院ss奇兵免费com| 一区二区在线免费观看| 国产精品亚洲成在人线| 一区二区三区无码视频免费福利| 中国亚洲女人69内射少妇| 中文在线观看国语高清免费| 亚洲永久精品ww47| 中文字幕无码毛片免费看| 婷婷亚洲久悠悠色悠在线播放| 亚在线观看免费视频入口| 久久亚洲精品成人无码网站| 99久久国产热无码精品免费| 亚洲熟女精品中文字幕| 日本免费高清一本视频| 老湿机一区午夜精品免费福利| 亚洲精品国产成人影院| 97人妻精品全国免费视频| 久久久久亚洲AV无码网站| 国产成在线观看免费视频| 亚洲av最新在线观看网址| 亚洲精品和日本精品| 中文字幕无线码中文字幕免费| 久久亚洲免费视频| 无码国产精品久久一区免费| 亚洲a∨国产av综合av下载| 在线精品亚洲一区二区三区 | 免费人成动漫在线播放r18 | 一本色道久久88综合亚洲精品高清| 免费无码专区毛片高潮喷水| 亚洲色婷婷六月亚洲婷婷6月| 日本一卡精品视频免费| 亚洲一久久久久久久久| 亚洲AV中文无码乱人伦| 一级毛片**不卡免费播| 亚洲欧美日韩中文无线码| 亚洲中文无韩国r级电影 | 亚洲第一精品电影网| 国产一级大片免费看| 一区二区三区观看免费中文视频在线播放 | 中文字幕免费在线看线人动作大片 |