1、Web Service基本概念java
Web Service也叫XML Web Service WebService是一種能夠接收從Internet或者Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通信技術。是:經過SOAP在Web上提供的軟件服務,使用WSDL文件進行說明,並經過UDDI進行註冊。web
XML:(Extensible Markup Language)擴展型可標記語言。面向短時間的臨時數據處理、面向萬維網絡,是Soap的基礎。apache
Soap:(Simple Object Access Protocol)簡單對象存取協議。是XML Web Service 的通訊協議。當用戶經過UDDI找到你的WSDL描述文檔後,他經過能夠SOAP調用你創建的Web服務中的一個或多個操做。SOAP是XML文檔形式的調用方法的規範,它能夠支持不一樣的底層接口,像HTTP(S)或者SMTP。瀏覽器
WSDL:(Web Services Description Language) WSDL 文件是一個 XML 文檔,用於說明一組 SOAP 消息以及如何交換這些消息。大多數狀況下由軟件自動生成和使用。網絡
UDDI (Universal Description, Discovery, and Integration) 是一個主要針對Web服務供應商和使用者的新項目。在用戶可以調用Web服務以前,必須肯定這個服務內包含哪些商務方法,找到被調用的接口定義,還要在服務端來編制軟件,UDDI是一種根據描述文檔來引導系統查找相應服務的機制。UDDI利用SOAP消息機制(標準的XML/HTTP)來發布,編輯,瀏覽以及查找註冊信息。它採用XML格式來封裝各類不一樣類型的數據,而且發送到註冊中心或者由註冊中心來返回須要的數據。eclipse
2、調用原理ide
實現一個完整的Web服務包括如下步驟:◆ Web服務提供者設計實現Web服務,並將調試正確後的Web服務經過Web服務中介者發佈,並在UDDI註冊中心註冊; (發佈)函數
◆ Web服務請求者向Web服務中介者請求特定的服務,中介者根據請求查詢UDDI註冊中心,爲請求者尋找知足請求的服務; (發現)工具
◆ Web服務中介者向Web服務請求者返回知足條件的Web服務描述信息,該描述信息用WSDL寫成,各類支持Web服務的機器都能閱讀;(發現)post
◆ 利用從Web服務中介者返回的描述信息生成相應的SOAP消息,發送給Web服務提供者,以實現Web服務的調用;(綁定)
◆ Web服務提供者按SOAP消息執行相應的Web服務,並將服務結果返回給Web服務請求者。(綁定)
3、調用方式:
webservice 的調用有3種方式
1). httpget 2). httppost 3). httpsoap
soap 的優勢是 能夠傳遞結構化的 數據,而前兩種不行。 btw, soap 最終也是使用 HTTP 傳送 XM
Webservice實例
1、使用CXF開發Web Service服務端:
每一個Web Service組件須要2個部分:接口和實現類: 步驟: 一、準備開發須要的jar包【apache-cxf-2.5.9下載】
二、開發一個webservice業務接口,方法使用@WebService修飾。package com.ywx;
import javax.jws.WebService;
@WebService public interface HelloWorld { String sayHi(String name); } 三、寫一個這個方法的實現類,方法也須要使用@WebService修飾,並指定其中的參數中,以下指定了所須要實現的接口、並指定服務名稱。 package com.ywx.impl;
import java.util.Date;
import javax.jws.WebService;
import com.ywx.HelloWorld; @WebService(endpointInterface="com.ywx.HelloWorld",serviceName="HelloWorldWs")//指定webservice所實現的接口以及服務名稱 public class HellowWorlds implements HelloWorld{
@Override
public String sayHi(String name) {
return name+"您好!如今時間是:"+new Date();
}
複製代碼
} 四、暴露Web Service的函數,運行函數暴露Web Service: package com.ywx.lee;
import javax.xml.ws.Endpoint;
import com.ywx.HelloWorld; import com.ywx.impl.HellowWorlds;
public class ServiceMain { public static void main(String args[]){ HelloWorld hw = new HellowWorlds(); //調用Endpoint的publish方法發佈Web Service Endpoint.publish("192.168.1.7/vashon", hw); System.out.println("Web Service暴露成功!"); } } 而後運行瀏覽器,輸入:http://192.168.1.7/vashon?wsdl 查看結果,若是成功生成以下wsdl文檔則表示Web Service暴露成功。
2、使用CXF開發Web Service客戶端:步驟:
一、新建一個客戶端工程 二、調用CXF提供的wsdl2java工具或使用eclipse/myeclipse的new Web Service生成客戶端代碼(這裏使用第二種方式):
輸入wsdl連接: 點擊next: 選擇生成客戶端代碼的位置: 點擊finish,生成客戶端代碼以下: 三、在客戶端寫測試類測試: package com.ywx.test;import java.rmi.RemoteException;
import com.ywx.HelloWorldProxy;
public class TestService { public static void main(String args[]){ HelloWorldProxy h = new HelloWorldProxy(); try { String s = h.sayHi("yangwenxue"); System.out.println("調webservice:"+s); } catch (RemoteException e) { e.printStackTrace(); } } } 運行結果(傳入一個參數,調用Web Service返回的字符串結果以下):
其調用生成的格式已經有服務端定義好了,看上面貼出來的代碼或者下面的截圖說明: Web Service服務端和客戶端工程結果截圖以下: