Java WebService接口生成和調用 圖文詳解

webservice簡介: 
Web Service技術, 能使得運行在不一樣機器上的不一樣應用無須藉助附加的、專門的第三方軟件或硬件, 就可相互交換數據或集成。依據Web Service規範實施的應用之間, 不管它們所使用的語言、 平臺或內部協議是什麼, 均可以相互交換數據。Web Service是自描述、 自包含的可用網絡模塊, 能夠執行具體的業務功能。Web Service也很容易部署, 由於它們基於一些常規的產業標準以及已有的一些技術,諸如標準通用標記語言下的子集XML、HTTP。Web Service減小了應用接口的花費。Web Service爲整個企業甚至多個組織之間的業務流程的集成提供了一個通用機制java

1、 WebService生成

1.在eclipse或myclipse新建一個Web項目,並新建一個class類,用於發佈; 
這裏寫圖片描述git

2.編寫供客戶端調用的方法,即編譯方法代碼; 
示例:github

import javax.jws.WebMethod;
import javax.jws.WebService;
import javax.xml.ws.Endpoint;

/**
* Title: ServiceHello
* Description: 基於jdk1.6以上的javax.jws 發佈webservice接口
                @WebService - 它是一個註解,用在類上指定將此類發佈成一個ws。
                Endpoint – 此類爲端點服務類,它的方法publish用於將一個已經添加了@WebService註解
                對象綁定到一個地址的端口上。 
* Version:1.0.0  
* @author panchengming
 */
@WebService  
public class JwsServiceHello {

    /** 供客戶端調用方法  該方法是非靜態的,會被髮布
     * @param name  傳入參數
     * @return String 返回結果
     * */
    public String getValue(String name){
        return "歡迎你! "+name;
    }

    /**
     * 方法上加@WebMentod(exclude=true)後,此方法不被髮布;
     * @param name
     * @return
     */
    @WebMethod(exclude=true)  
    public String getHello(String name){
        return "你好! "+name;
    }

    /** 靜態方法不會被髮布
     * @param name
     * @return
     */
    public static String getString(String name){
        return "再見!"+name;
    }


     //經過EndPoint(端點服務)發佈一個WebService
    public static void main(String[] args) {
     /*參數:1,本地的服務地址;
           2,提供服務的類;
      */
     Endpoint.publish("http://192.168.1.105:8080/Service/ServiceHello", new JwsServiceHello());
     System.out.println("發佈成功!");
     //發佈成功後 在瀏覽器輸入 http://192.168.1.105:8080/Service/ServiceHello?wsdl
    }
}

3.進行編譯運行(注:失敗檢查jdk版本) 
這裏寫圖片描述 
4.將所設地址加上?wsdl到瀏覽器上訪問,如出現XML格式代碼,則發佈成功,反之,則否;(url: http://192.168.1.105:8080/Service/ServiceHello?wsdl
這裏寫圖片描述web

2、WebService調用方法

生成代碼方式一瀏覽器

1.新建一個class類,用於調用webservice。右鍵src,找到Web Service Client,並輸入wsdl地址,選擇下載代碼的路徑;(url: http://192.168.1.105:8080/Service/ServiceHello?wsdl
這裏寫圖片描述 
這裏寫圖片描述 
這裏寫圖片描述 
2.將地址上的文件下載下來(注意和發佈JDK一致); 
3.寫調用方法調用下載下來的WebService中的java類中的方法; 
示例:網絡

import com.pcm.ws.jws.JwsServiceHello;
import com.pcm.ws.jws.JwsServiceHelloService;

/**
 * 
* Title: JwsClientHello
* Description: webService 客戶端調用
* Version:1.0.0  
* @author panchengming
 */
public class JwsClientHello {

    public static void main(String[] args) {
         //調用webservice
        JwsServiceHello hello=new JwsServiceHelloService().getJwsServiceHelloPort();
        String name=hello.getValue("panchengming");
        System.out.println(name);
    }
}

這裏寫圖片描述

生成代碼方式二 
1.建立Web Service Project,命名爲TheClient。 
2.在dos命令下輸入 wsimport -s 「src目錄」 -p 「生成類所在包名」 -keep 「wsdl發佈地址」 
示例:wsimport -s G:\workspace\webService\webService_Project\src -p com.pcm.ws.jws -keep http://192.168.1.105:8080/Service/ServiceHello?wsdl 
3.成功則返回 parsing WSDL… 
generating code… 
compiling code… 
4.刷新項目,生成類; 
5,寫調用方法(同上);eclipse

3、總結:

如何發佈一個Web服務: 
a,在類上添加@WebService註解 
(注:此註解是jdk1.6提供的,位於javax.jws.WebService包中) 
b,經過EndPoint(端點服務)發佈一個WebService 
(注:EndPoint是jdk提供的一個專門用於發佈服務的類,該類的publish方法接收兩個參數,一個是本地的服務地址,二是提供服務的類。位於 javax.xml.ws.Endpoint包中) 
c,注: 
類上添加註解@WebService,類中全部非靜態方法都會被髮布; 
靜態方法和final方法不能被髮布; 
方法上加@WebMentod(exclude=true)後,此方法不被髮布;url

該demo我放在github上了,https://github.com/xuwujing/webservice_project。 有興趣的能夠看看。spa

相關文章
相關標籤/搜索