WebService遠程調用技術

一、---------------------------------介紹--------------------------------------------------java

(1)遠程調用:一個系統遠程調用另外一個系統的服務,已獲取遠程系統的業務數據。web

(2)爲何使用:基於安全性的考慮,通常企業不會開放本身的數據庫只能使用遠程調用技術。數據庫

2----------------------- Webservice是如何實現遠程調用?三要素webservice的做用?-----------------------------------編程

(1)Webservice原理:webservice是一種使用http傳輸的SOAP協議的數據的遠程調用技術安全

(2) WSDL做用webservice服務端的使用說明書。(Web Service Description Language)ide

(3)SOAP做用規範XML標籤。工具

(4) UDDI提供webservice服務端的搜索和註冊功能。性能

 

注意事項開發工具

  1. 開發webservice的應用須要開發客戶端和服務端
  2. 客戶端須要參考webservice服務端的使用說明WSDL

 

3----------------------------Webservice入門程序--------------------------------------------------測試

(1) 服務端

 第一步:建立SEIService Endpoint Interface接口,本質就是Java接口

public interface WeatherInterface {

       public String queryWeather(String Name);

}

第二步建立SEI實現類

  • 類上加入註解:@WebService
  • 該註解表示該類是一個webservice的服務類,要發佈該類下public方法

@WebService

public class WeatherInterfaceImpl implements WeatherInterface {

 

         @Override

         public String queryWeather(String Name) {

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

              String weather = "";

              return weather;

}

}

第三步發佈服務

  • Endpointpublish方法發佈服務
  • 方法publish兩個參數:1.服務地址2.服務實現類實現

public class WeatherServer {

     public static void main(String[] args) {

      //Endpoint類的publish方法發佈服務

     //端口號建議不要過短,容易被系統佔用;不要太長,太長不支持

       Endpoint.publish("http://127.0.0.1:12345/weather", new WeatherInterfaceImpl());

     }

}

l第四步測試服務是否發佈成功,經過閱讀服務端的使用說明書,肯定關鍵元素存在(/方法/參數等)表示服務發佈成功

 

  • WSDL地址規則:服務地址+?wsdl
  • WSDL地址的閱讀方式:從下往上找到service標籤,肯定binding屬性

 

注意:

發佈SOAP1.2服務端

l第一步:在實現類上加入以下註解

@BindingType(javax.xml.ws.soap.SOAPBinding.SOAP12HTTP_BINDING)

l第二步引入第三方插件jarjaxws-ri-2.2.8

 第三步:從新啓動服務端

 

(2)客戶端(好幾種方法實現)

 

開發步驟

 

 第一步wsimport命令生成客戶端代碼。

 

wsimport -s . http://127.0.0.1:12345/weather?wsdl --------------------------若是你的開發工具是IDEA能夠直接使用工具,裏面有,能夠百度一下。

 

 第二步建立服務視圖,服務視圖名的類從service標籤的name屬性獲取

 

 第三步經過服務視圖獲取對應服務實現類的實例,服務實現類的名稱從portTypename屬性獲取

 

 第四步調用查詢方法,方法名從operation下的name屬性獲取

 

 

public class WeatherClient {

 

 

 

        public static void main(String[] args) {

 

            //建立服務視圖

 

          WeatherInterfaceImplService weatherInterfaceImplService = new WeatherInterfaceImplService();

 

                  //獲取服務實現類的實例

 

                 String weather = weatherInterfaceImpl.queryWeather("北京");

 

                System.out.println(weather);

 

}

 

}

 

5-------------------------- Webservice優缺點--------------------------

優勢:

  • 跨越防火牆,使用http協議,http協議的默認端口是80,防火牆默認是不攔截80端口
  • 平臺,使用httpXML這兩個協議都是跨平臺的
  • Webservice支持面向對象編程

缺點:

  • Webservice使用XML標籤傳輸數據,發送數據時XML標籤也必須發送,標籤又要遵循SOAP協議,隨着SOAP協議的完善,標籤愈來愈多,傳輸效率降低,性能

 

6----------------------------使用------------------------------------

適用場景:

  • 發佈一個服務,客戶端類型未知不考慮性能建議使用webservice
  • 服務端已肯定使用webservice客戶端沒法更改

不適用場景:

  • 考慮性能時不建議使用webservice
相關文章
相關標籤/搜索