JAVA 6.0 之后,其中JDK自帶有個輕量級的web service 服務器。如果你比較細心一定發現在你安裝java的路徑下,有java webservice 的示例代碼。

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

             我用的是netbeans 6,首先建立一個java 應用程序工程,名為WebServices。建立一個服務端程序。

          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中相關的描述    
              @WebMethod(action  =   " sayHi " , operationName  =   " sayHi " )
              
          public  String sayHi(@WebParam(name  =   " MyName " ) String name)
              {
                  
          return   " Hi, "   +  name;  // @WebParam是自定義參數name在WSDL中相關的描述

              }

              @Oneway 
          // 表明該服務方法是單向的,既沒有返回值,也不應該聲明檢查異常

              @WebMethod(action 
          =   " printSystemTime " , operationName  =   " printSystemTime " ) // 自定義該方法在WSDL中相關的描述
               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()
                  {
                      
          // 發布WSProvider到http: // localhost:8888/hechangmin/WSProvider這個地址,之前必須調用wsgen命令
                      
          // 生成服務類WSProvider的支持類,命令如下:
                      
          // wsgen -cp . WebServices.WSProvider
                       Endpoint.publish("http://localhost:8888/JAVA-HE/WSProvider", new WSProvider());
               
          }
              }
          }

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

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

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

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

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

          也就是服務端就OK了。

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

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

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


          產生一個效果:在classes下 按照 之前指定的名字空間產生的包下(目錄結構)生成了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

          輸出了。順利完成!

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

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


          FeedBack:
          # re: 實戰 JDK 6.0 自帶web service
          2008-07-08 11:39 | 如坐春風
          不錯。  回復  更多評論
            
          # re: 實戰 JDK 6.0 自帶web service
          2008-07-10 13:27 | 44you
          還沒用過,了解一下  回復  更多評論
            
          # re: 實戰 JDK 6.0 自帶web service [未登錄]
          2011-08-30 22:02 | peter
          看了你的文章,有些疑問。加我qq : 312908671 討論.  回復  更多評論
            

          常用鏈接

          留言簿(21)

          隨筆分類(265)

          隨筆檔案(242)

          相冊

          JAVA網站

          關注的Blog

          搜索

          •  

          積分與排名

          • 積分 - 914173
          • 排名 - 40

          最新評論

          主站蜘蛛池模板: 石狮市| 阳高县| 读书| 九龙城区| 屏边| 塘沽区| 行唐县| 汕头市| 柳河县| 麻城市| 扬州市| 开江县| 通辽市| 绥宁县| 巩留县| 汾西县| 嘉善县| 台前县| 泌阳县| 溆浦县| 屯昌县| 石景山区| 社旗县| 江陵县| 来安县| 绍兴市| 东港市| 临西县| 临武县| 岢岚县| 仪陇县| 平度市| 大安市| 三门峡市| 吴忠市| 泉州市| 凌海市| 衡水市| 岱山县| 克东县| 铜鼓县|