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

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

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

    網(wǎng)路冷眼@BlogJava

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

    版本歷史:
    2006.12.17 發(fā)布
    2006.12.18 更正不加標準輸入流讀取字符,程序?qū)⒘⒓赐顺觯瑢⒉荒芴峁┓?wù)。將程序列表的行號去掉,方便代碼粘貼。


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


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

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

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

    與三個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 及其針對Java 平臺Web服務(wù)元數(shù)據(jù)的規(guī)范提供一個在類中利用標注設(shè)計和開發(fā)Web服務(wù)的機制。標注從J2SE 5.0引入,在Java SE 6.0得到了進一步擴展。在第10章將會完整描述。但是,標注基本上允許將@tag加入到類,方法和特性來描述相關(guān)的元數(shù)據(jù)。一個解析器然后能定位標記并采取適當(dāng)?shù)男袆樱槐M管行動什么時候發(fā)生完全依賴于標記自身。

    JAX-WS 2.0 很容易使用. 本文將介紹如何使用Java SE 6。以JAX-WS如何建立一個簡單的Web服務(wù)。首先建立一個建立一個將要作為Web服務(wù)發(fā)布的類,如表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編譯器將發(fā)布此類為Web服務(wù)。下面的代碼顯示了這種變化(以黑體顯示增加的代碼)。

    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服務(wù)。如果沒有制定,標注的名稱就是類的名稱。也能制定命名空間,服務(wù)名,WSDL 位置和endpoint 接口等。在指定的上下文環(huán)境中,可以使用javax.xml.ws.Endpoint類publish()靜態(tài)方法發(fā)布上面的類作為Web服務(wù)代碼見列表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();
            }

    }



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

    >  wsgen –cp . hello.CircleFunctions

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

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


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

    評論

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

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

    樓主辛苦了

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

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

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

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

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

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

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

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

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

    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之后也產(chǎn)生的大量的代碼。但是http://localhost:8080/WebServiceExample/circlefunctions?WSDL卻出不來,why?
    謝謝。

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

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

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

    2007-01-03 11:50 by 交口稱贊
    客戶端的寫法
    請看偶的主頁
    http://m.tkk7.com/vip01/
    主站蜘蛛池模板: 欧美亚洲精品一区二区| 国产精品免费_区二区三区观看 | 国产精品国产自线拍免费软件| 亚洲一区二区三区四区在线观看| a级精品九九九大片免费看| 亚洲人成网站在线观看播放| 中文字幕在线免费播放| 国产亚洲精品xxx| 成年免费a级毛片免费看无码| 国产AV无码专区亚洲AWWW| 伊人免费在线观看| 亚洲av永久无码精品秋霞电影影院| 国产一区二区三区免费| 亚洲av色福利天堂| 69xx免费观看视频| 亚洲午夜无码久久| 亚洲国产精品一区二区第一页免 | 久久不见久久见中文字幕免费| 亚洲午夜无码久久久久软件 | 亚洲av伊人久久综合密臀性色| 久久久久久夜精品精品免费啦| 亚洲最新视频在线观看| 中国在线观看免费国语版| 亚洲视频在线观看| 久久久久国产精品免费免费搜索 | 免费无码又爽又高潮视频| 男男gay做爽爽的视频免费| 久久久久亚洲AV无码专区网站| 特级精品毛片免费观看| 激情综合亚洲色婷婷五月| 国产乱弄免费视频| 在线观看特色大片免费网站| 亚洲国产日韩综合久久精品| 亚洲精品尤物yw在线影院| 91av免费观看| 精品一区二区三区无码免费直播| 久热综合在线亚洲精品| 免费毛片a在线观看67194| 四虎成人精品国产永久免费无码| 亚洲黄色一级毛片| 免费二级毛片免费完整视频|