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:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">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());
- }
- }</span>
注:
@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:
- <span style="font-family:KaiTi_GB2312;font-size:18px;">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);
- }
- }</span>
(4)運行結果:
總結:
通過此篇博客,應該掌握到:如何發佈一個Java Web服務;如何在客戶端訪問發佈的Web服務。