JAVA專案中釋出WebService服務—簡單例項

槿。。。發表於2017-11-23

1,在Java專案中釋出一個WebService服務:

如何釋出?
JDK1.6中JAX-WS規範定義瞭如何釋出一個WebService服務:
(1)用jdk1.6.0_21以後的版本釋出;
(2)與Web服務相關的類,都位於Javax.jws.*包中:

  • @WebService——此註解用在類上指定將此類釋出成一個WebService;
  • EndPoint——此類為端點服務類,其中publish()方法用於將一個已經新增了@WebService註解物件繫結到一個地址的埠上,用於釋出。

2,例子:

(1)釋出WebService服務
這裡寫圖片描述
HelloWebService.java:

package cn.tgb.ws;  
importjavax.jws.WebMethod;  
importjavax.jws.WebService;  
importjavax.xml.ws.Endpoint;  
/** 
 *  @WebService - 它是一個註解,用在類上指定將此類釋出成一個ws. 
    Endpoint – 此類為端點服務類,它的方法publish用於將一個已經新增了@WebService註解物件繫結到一個地址的埠上。 

 * @author xuemin 
 * 
 */  
@WebService  
public classHelloWebService {  

publicString HelloWord(String name){  
return"Hello: "+name;  
}  

/** 
 *新增exclude=true後,HelloWord2()方法不會被髮布 
 * @param name 
 * @return 
 */  
@WebMethod(exclude=true)  
publicString HelloWord2(String name){  
return"Hello: "+name;  
}  
publicstatic void main(String[] args) {  
/** 
 *引數1:服務的釋出地址 
 *引數2:服務的實現者 
 */  
Endpoint.publish("http://192.168.24.138:456/helloWord",new HelloWebService());  

}  

注:
* @WebService- 它是一個註解,用在類上指定將此類釋出成一個ws.
* Endpoint –此類為端點服務類,它的方法publish用於將一個已經新增了@WebService註解物件繫結到一個地址的埠上。

執行以上程式進行釋出。

(2)檢視wsdl

地址:http://192.168.24.138:456/helloWord?wsdl
只要在客戶端瀏覽器能看到此WSDL文件,說明服務釋出成功
這裡寫圖片描述
以上服務釋出成功;
總結:
如何釋出一個Web服務:

  • a,在類上新增@WebService註解 (注:此註解是jdk1.6提供的,位於javax.jws.WebService包中)
  • b,通過EndPoint(端點服務)釋出一個WebService
    (注:EndPoint是jdk提供的一個專門用於釋出服務的類,該類的publish方法接收兩個引數,一個是本地的服務地址,二是提供服務的類。位於javax.xml.ws.Endpoint包中)
  • c,注: 類上新增註解@WebService,類中所有非靜態方法都會被髮布; 靜態方法和final方法不能被髮布;方法上加@WebMentod(exclude=true)後,此方法不被髮布

(3)客戶端訪問釋出的服務

根據WSDL文件來在客戶端編寫程式碼,訪問釋出的服務;但是,WSDL文件看不懂怎麼辦?程式碼該如何編寫?
——你看不懂,JDK看得懂,wsimport是JDK自帶的,可以根據WSDL文件生成客戶端呼叫程式碼的工具。無論伺服器端WebService使用什麼語言編寫的,都將在客戶端生成Java程式碼。所以伺服器用什麼語言編寫的並不重要。

wsimport.exe命令引數熟知:
-d:生成class檔案。預設引數。
-s:生成Java檔案 -p:自定義包結構

解析地址生成原始碼到E盤:
這裡寫圖片描述

執行以上命令後,即可在E盤下生成如下包及類:
這裡寫圖片描述
注:還可以自定義包結構:
自定義包結構的命令:
這裡寫圖片描述
這裡寫圖片描述
將生成的包及.java檔案複製到客戶端:如下圖
這裡寫圖片描述

建立訪問服務的類:MyClient.java:
這裡寫圖片描述

MyClient.java:

package cn.tgb.ws;  

public classMyClient {  

  publicstatic void main(String[] args) {  
     HelloWebServiceServicehwss = new HelloWebServiceService();  

     HelloWebServicehws = hwss.getHelloWebServicePort();  

     Stringresult=hws.helloWord("hanxuemin");  
     System.out.println(result);  
  }  

(4)執行結果:
這裡寫圖片描述

相關文章