程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 實戰JDK 6.0自帶web service

實戰JDK 6.0自帶web service

編輯:關於JAVA

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.blogjava.net/JAVA-HE " ,serviceName =  " HelloService " )
public  class WSProvider
{
  // @WebResult(name="Greetings") // 自定義該方法返回值在WSDL中相 關的描述
  @WebMethod(action =  " sayHi " ,operationName =  " sayHi " )
   public StringsayHi(@WebParam(name =  " MyName " )Stringname)
  {
     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)
  {
    ThreadwsPublisher =  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",newWSProvider());

當然直接運行WSProvider 。

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

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

也就是服務端就OK了。

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

首先選擇項目,右鍵新建 web服務客戶端。其中ws url填入剛才生成的wsdl地址:

http://localhost:8888/JAVA-HE/WSProvider?wsdl

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

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

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

/*
*Tochangethistemplate,chooseTools|Templates
*andopenthetemplateintheeditor.
 */
package client;
import net.blogjava.java_he. * ;
/**
*
* @author hecm
 */
public  class Test{
   public  static  void main(Stringargs[])
  {
    HelloServicehs =  new HelloService();
    WSProviderws = hs.getWSProviderPort();
    System.out.println(ws.sayHi( " hechangmin " ));
    ws.printSystemTime();
  }
}

運行這個測試類:

Hi,hechangmin

輸出了。順利完成!

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

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved