CONAN ZONE

          你越掙扎我就越興奮

          BlogJava 首頁 新隨筆 聯(lián)系 聚合 管理
            0 Posts :: 282 Stories :: 0 Comments :: 0 Trackbacks
          JAVA 6.0 之后,其中JDK自帶有個輕量級的web service 服務(wù)器。如果你比較細心一定發(fā)現(xiàn)在你安裝java的路徑下,有java webservice 的示例代碼。

             我以前也用java開發(fā)過web service ,但是當(dāng)初用了一個apache 下axis 開源項目。如果axis夜進化了,反正我不認(rèn)識了。不過java自帶有何必舍近求遠呢。今天我就把自己創(chuàng)建的最簡單java webservice 范例過程記錄下來,與大家分享。

             我用的是netbeans 6,首先建立一個java 應(yīng)用程序工程,名為WebServices。建立一個服務(wù)端程序。
          package  WebServices;

          import  javax.jws. * ;
          import  javax.xml.ws.Endpoint;

          /**
           * 
          @author  hecm
           
          */
          @WebService(targetNamespace 
          =   " http://www.aygfsteel.com/JAVA-HE " , serviceName  =   " HelloService " )
          public   class  WSProvider
          {

             
          //  @WebResult(name = "Greetings") // 自定義該方法返回值在WSDL中相關(guān)的描述    
              @WebMethod(action  =   " sayHi " , operationName  =   " sayHi " )
              
          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/hechangmin/WSProvider這個地址,之前必須調(diào)用wsgen命令
                      
          // 生成服務(wù)類WSProvider的支持類,命令如下:
                      
          // wsgen -cp . WebServices.WSProvider
                       Endpoint.publish("http://localhost:8888/JAVA-HE/WSProvider", new WSProvider());
               
          }
              }
          }

          當(dāng)然建立對應(yīng)的包,就不用說了。
          然后編譯文件。
          進入命令提示符下,進入classes目錄,運行:wsgen -cp . WebServices.WSProvider

          可以看到將剛才的class 生成了幾個java文件和class文件。

          現(xiàn)在要做的是發(fā)布ws到http://localhost:8888/chinajash/WSProvider
          而實際上的動作就是:Endpoint.publish("http://localhost:8888/chinajash/WSProvider",new WSProvider());
          當(dāng)然直接運行WSProvider 。

          然后輸入http://localhost:8888/JAVA-HE/WSProvider?wsdl

          就已經(jīng)查看到生成的wsdl (webservice 描述語言)。

          也就是服務(wù)端就OK了。

          保持運行。編寫一個測試客戶端:

          首先選擇項目,右鍵新建 web服務(wù)客戶端。其中ws url填入剛才生成的wsdl地址:
          http://localhost:8888/JAVA-HE/WSProvider?wsdl

          (實際上:和wsimport http://localhost:8888/JAVA-HE/WSProvider?wsdl 一樣的效果)


          產(chǎn)生一個效果:在classes下 按照 之前指定的名字空間產(chǎn)生的包下(目錄結(jié)構(gòu))生成了7個幫助class。

          然后我們建立一個包 client 建立測試文件:

          /*
           * To change this template, choose Tools | Templates
           * and open the template in the editor.
           
          */

          package  client;

          import  net.blogjava.java_he. * ;
          /**
           *
           * 
          @author  hecm
           
          */
          public   class  Test {
              
          public   static   void  main(String args[])
              {
                  HelloService hs 
          =   new  HelloService();
                  WSProvider ws 
          =  hs.getWSProviderPort();
                  System.out.println(ws.sayHi(
          " hechangmin " ));
                  ws.printSystemTime();
              }

          }


          運行這個測試類:
          Hi,hechangmin

          輸出了。順利完成!

          一點個人經(jīng)驗,你發(fā)布的地址最好寫成可配置。還有就是wsdl 中會嚴(yán)格按照你指定的url來訪問,比如你指定的127.0.0.1 那么你用本機IP的時候也許并不能順利訪問。

          posted on 2008-07-08 02:59 -274°C 閱讀(880) 評論(1)  編輯  收藏 所屬分類: JAVAJSP

          posted on 2008-07-08 23:02 CONAN 閱讀(223) 評論(0)  編輯  收藏 所屬分類: Web Service
          主站蜘蛛池模板: 佛学| 玉山县| 万全县| 壤塘县| 松溪县| 会理县| 沁水县| 茂名市| 青铜峡市| 福州市| 新密市| 德阳市| 加查县| 家居| 乌海市| 酉阳| 大悟县| 南溪县| 广水市| 光山县| 元氏县| 满城县| 清水县| 天门市| 游戏| 太和县| 布尔津县| 桂林市| 晋中市| 舞阳县| 滦南县| 连江县| 永胜县| 甘德县| 宜都市| 台前县| 巩义市| 咸丰县| 胶南市| 通山县| 星子县|