webservice初識,SOAP1.1版本


客戶端與服務端模式,非web端發布

1.1      【Jax-ws第一個例子】

1.1.1     第一步:服務端開發

 

  1. 編寫SEI(Service Endpoint Interface),SEI在webservice中稱為portType,在java中稱為接口。

 

代碼如下:

/**

 * 天氣查詢服務接口

 * @version V1.0

 */

public interface WeatherInterface {

    //天氣查詢

    public String queryWeather(String cityName);

   

}

 

  1. 編寫SEI實現類,此類作為webservice提供服務類

 

代碼如下:

 

@WebService

public class WeatherInterfaceImpl implements WeatherInterface {

 

    @Override

    public String queryWeather(String cityName) {

       System.out.println("from client.."+cityName);

       String result = "晴朗";

       System.out.println("to client..."+result);

       return result;

    }

   

    public static void main(String[] args) {

       //發送webservice服務

       Endpoint.publish("http://192.168.1.100:1234/weather", new WeatherInterfaceImpl());

    }

   

}

注意:

SEI實現類中至少要有一個非靜態的公開方法需要作為webservice服務方法。

public class 上邊要加上@WebService

 

  1. endpoint發布服務

 

//發送webservice服務

       Endpoint.publish("http://192.168.1.100:1234/weather", new WeatherInterfaceImpl());

 

 

1.1.2     第二步:查看wsdl

Webservice發布成功,通過wsdl查看webservice發布的正確性

 

  1. 在地址欄輸入(注意后面的參數?wsdl)

http://192.168.1.100:1234/weather?wsdl

  1. Wsdl不是webService,只是獲取一個用於描述WebService的說明文件
  2. wsdl- WebServiceDescriptionLanguage,是以XML文件形式來描述WebService的”說明書”,有了說明書,我們才可以知道如何使用或是調用這個服務.

 

 

1.1.3     第三步:Wsimport生成客戶端調用類

 

1.1.3.1              Wsimport介紹

wsimport是jdk自帶的webservice客戶端工具,可以根據wsdl文檔生成客戶端調用代碼(java代碼).當然,無論服務器端的WebService是用什么語言寫的,都可以生成調用webservice的客戶端代碼,服務端通過客戶端代碼調用webservice。

wsimport.exe位於JAVA_HOME\bin目錄下.

常用參數為:

-d<目錄>  - 將生成.class文件。默認參數。

-s<目錄> - 將生成.java文件。

-p<生成的新包名> -將生成的類,放於指定的包下。

(wsdlurl) - http://server:port/service?wsdl,必須的參數。

示例:

C:/> wsimport –s . http://127.0.0.1:1234/weather?wsdl

注意:-s不能分開,-s后面有個小點

 

 

1.1.3.2              客戶端生成注意事項:

 

  1. 可以通過java –version檢查你當前的版本號保存是jdk1.6以上。Jdk1.6.0_13以后的版本支持jaxws2.1。

 

  1. 在Eclipse中創建一個空的java工程為wsimport,此工程作為存放客戶端代碼。
  2. cmd命令行進入此wsimport 工程的src目錄,

輸入以下命令:

 

參數說明:-s是指編譯出源代碼文件,后面的.(點)指將代碼放到當前目錄下.

   最后面的http….是指獲取wsdl說明書的地址.

 

  1. 生成完成,刷新Eclipse中wsimport工程,將src下生成.java文件代碼Copy到webservice客戶端工程(見下)中。

 

 

1.1.4     第四步:客戶端編寫

 

代碼如下:

/**

 * 天氣查詢客戶端

 * @version V1.0

 */

public class WeatherClient {

    public static void main(String[] args) {

       //創建服務視圖

       WeatherInterfaceImplService weatherInterfaceImplService =new WeatherInterfaceImplService();

       //通過服務視圖得到服務端點

       WeatherInterfaceImpl weatherInterfaceImpl= weatherInterfaceImplService.getPort(WeatherInterfaceImpl.class);

       //調用webservice服務方法

       String result = weatherInterfaceImpl.queryWeather("鄭州");

       System.out.println(result);

    }

}

 

 

1.1.5     webservice優點

1、采用xml支持跨平台遠程調用。

2、基於http的soap協議,可跨越防火牆。

3、支持面向對象開發。

4、有利於軟件和數據重用,實現松耦合。

 

1.1.6     webservice缺點

由於soap是基於xml傳輸,本身使用xml傳輸會傳輸一些無關的東西從而效率不高,隨着soap協議的完善,soap協議增加了許多內容,這樣就導致了使用soap協議進行數據傳輸的效率不高。

 

 

如果要使用SOAP1.2版本也可,但是測試必須借助第三方,因為jdk不支持根據wsdl(SOAP1.2版本的)生成客戶端類,可以使用CXF生成並測試


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM