Web Service運作原理
Service WebService是一種可以接收從Internet或Intranet上的其它系統中傳遞過來的請求,輕量級的獨立的通訊技術。是:透過SOAP在Web上提供的軟體服務,使用WSDL檔案進行說明,並透過UDDI進行註冊。
XML:(Extensible Markup Language)擴充型可標記語言。面向短期的臨時資料處理、面向萬維網絡,是Soap的基礎。
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格式來封裝各種不同類型的數據,並且發送到註冊中心或由註冊中心來返回所需的數據。
二、呼叫原則
◆ Web服務提供者設計實作Web服務,並將調試正確後的Web服務透過Web服務中介者發佈,並透過Web服務中介者發佈,並發佈在UDDI註冊中心註冊;(發佈)
◆ Web服務請求者向Web服務中介者請求特定的服務,中介者根據請求查詢UDDI註冊中心,為請求者尋找滿足請求的服務;(發現)
◆ Web服務中介者向Web服務請求者傳回符合條件的Web服務描述訊息,該描述訊息以WSDL寫成,各種支援Web服務的機器都能閱讀;(發現)
◆ 利用從Web服務中介者傳回的描述資訊產生對應的SOAP訊息,傳送給Web服務提供者,以實現Web服務的呼叫;(綁定)
◆ Web服務提供者按SOAP訊息執行對應的Web服務,並將服務結果傳回給Web服務請求者。 (綁定)
三、呼叫方式:
1. Net下採用GET/POST/SOAP方式動態呼叫WebService的簡易彈性方法(C#)
webservice 的呼叫有3種方式
1) . httpget2). httppost
3). httpsoap
soap 的優點是可以傳遞結構化的數據,而前兩種則不行。
btw, soap 最後也是使用HTTP 傳送XM
Webservice實例
一、使用CXF開發Web Service服務端:
一、使用CXF開發Web Service服務端:
Web ServiceService需要2個部分:「Web 」元件步驟:
1、準備開發需要的jar包【apache-cxf-2.5.9下載】
2、開發一個webservice業務接口,方法使用@WebService修飾。package com.ywx; import javax.jws.WebService; @WebService public interface HelloWorld { String sayHi(String name); }
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(); } }
4、暴露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暴露成功。
二、使用CXF开发Web Service客户端:
步骤:
1、新建一个客户端工程
2、调用CXF提供的wsdl2java工具或使用eclipse/myeclipse的new Web Service生成客户端代码(这里使用第二种方式):
输入wsdl链接:
点击next:
选择生成客户端代码的位置:
点击finish,生成客户端代码如下:
3、在客户端写测试类测试:
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服务端和客户端工程结果截图如下:
更多Webservice工作原理及實例相关文章请关注PHP中文网!