一 . WebService 概念
WebSerivce
是通過一系列標準和協(xié)議來保證程序之間動態(tài)連接,即分布式服務組件。本質(zhì)上就是要以標準話的形式實現(xiàn)企業(yè)內(nèi)外部各個不同服務系統(tǒng)之間的互調(diào)或集成。其中最
基本的協(xié)議包裹:SOAP(WebService之間的基本通信協(xié) 議),WSDL(WebService描述語言,它定義了WebSerivce
是做什么的,怎么做和查詢的信息),UDDI(用于集中存放和查找WSDL描述文件,起著目錄服務器的作用)。
1. SOAP. Simple Object Access Protocol
SOAP是消息傳遞的協(xié)議,它規(guī)定了Web Serivces之間是怎樣傳遞消息的。簡單的說,SOAP規(guī)定了:
1). 傳遞的消息格式是XML。使Web Services 可以在任何平臺,任何語言實現(xiàn)。
2). 遠程對象方法調(diào)用的格式。 規(guī)定了怎樣表示被調(diào)用對象及調(diào)用的方法名和參數(shù)類型。
3). 參數(shù)類型和XML格式之間的映射,被調(diào)用的方法有時候需要傳遞一個復雜的參數(shù),例如,一個Customer對象,怎樣用XML來表示一個對象參數(shù),也是SOAP所定義的范圍
例如:<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="................../">
<soapenv:Envelope
xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:web="...................">
<soapenv:Header/>
<soapenv:Body>
<web:addNewCustomer>
<!--Optional:-->
<arg0>
<id>?</id>
<!--Optional:-->
<lastUpdatedDate>?</lastUpdatedDate>
<!--Optional:-->
<name>?</name>
</arg0>
</web:addNewCustomer>
</soapenv:Body>
</soapenv:Envelope>
4). 異常處理以及其他的相關信息
2. WSDL.Web Services Description Language
是Web
Services的定義語言
。是基于XML格式的關于WEB服務的描述語言,主要的目的在于為別人提供你實現(xiàn)某種服務的有關內(nèi)容,也即為了讓別的程序調(diào)用,你必須告訴大家你的服務接
口,例如服務名稱,服務所在的機器名稱,監(jiān)聽端口,傳遞參數(shù)的類型,個數(shù),順序等等,這樣別人才能調(diào)用
你的服務。使用者使用者通過這個wsdl文檔,創(chuàng)建想用的SOAP請求信息,通過HTTP傳遞web Service 提供者,Web
服務器在完成服務請求之后,將SOAP返回消息傳回請求者,服務請求者在根據(jù)wsdl文檔將SOAP消息解析成自己能夠理解的內(nèi)容。
例如: CustomerService.wsdl ,CustomerService_schema1.xsd(省落)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!-- Generated by JAX-WS RI at
http://jax-ws.dev.java.net. RI's version is JAX-WS RI
2.1.3.1-hudson-749-SNAPSHOT. -->
<definitions targetNamespace=".............."
name="CustomerService" xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="..........." xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<types>
<xsd:schema>
<xsd:import namespace="...................." schemaLocation="CustomerService_schema1.xsd"/>
</xsd:schema>
</types>
<message name="addNewCustomerResponse">
<part name="parameters" element="tns:addNewCustomerResponse"/>
</message>
<portType name="CustomerService">
<operation name="addNewCustomer">
<input message="tns:addNewCustomer"/>
<output message="tns:addNewCustomerResponse"/>
</operation>
</portType>
<binding name="CustomerServicePortBinding" type="tns:CustomerService">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http" style="document"/>
<operation name="addNewCustomer">
<soap:operation soapAction=""/>
<input>
<soap:body use="literal"/>
</input>
<output>
<soap:body use="literal"/>
</output>
</operation>
</binding>
<service name="CustomerServiceService">
<port name="CustomerServicePort" binding="tns:CustomerServicePortBinding">
<soap:address location="REPLACE_WITH_ACTUAL_URL"/>
</port>
</service>
</definitions>
注意: Types :數(shù)據(jù)類型的定義容器,它使用某種類型系統(tǒng)(一般使用XML Schema中的類型系統(tǒng)。例如這里面就是)
Message :通信消息的數(shù)據(jù)結(jié)構的抽象類型化定義。使用Types所定義的類型來定義整個消息的數(shù)據(jù)結(jié)構(例如:CustomerService_schema1.xsd)。
PortType:對于每個訪問入口類型所支持的操作的抽象幾個,這些操作可以由一個或多個訪問服務點來支持。
Operation: 對服務中所支持的操作的抽象描述,一般單個Operation描述了一個訪問入口的請求/響應消息對。例如:
<operation name="addNewCustomer">
<input message="tns:addNewCustomer"/>
<output message="tns:addNewCustomerResponse"/>
</operation>
中有input/outPut消息對。
Binding: 特定端口類型的具體協(xié)議和數(shù)據(jù)格式規(guī)范的綁定
Port : 定義為協(xié)議/數(shù)據(jù)格式綁定與具體的Web訪問地址組合的單個服務訪問點
Service:相關服務訪問點的集合。
3. UDDI .Universal Description, Discovery, and Integration
簡單說,UDDI用于集中存放和查找WSDL描述文件,起著目錄服務器的作用。
二 . Web service 生命期
見圖:http://gceclub.sun.com.cn/staticcontent/html/java/webservices_for/webservice_for_html_m126e0ad.gif
下面描述了XML Web service 調(diào)用時發(fā)生事件的序列:
1. 客戶端建立了新的XML Web service 服務代理類實例,此實例對象駐留在客戶端的計算機中。
2. 客戶端調(diào)用一個代理類的方法。
3. 客戶計算機的底層結(jié)構序列化XML Web service 方法的參數(shù)為SOAP消息,并通過網(wǎng)絡將其發(fā)送到XML Web service 服務端。
4. 在服務端的底層結(jié)構及收到SOAP消息,并房序列化為XML。建立一個類的實例來完成XML Web service,調(diào)用XML Web service 方法并傳遞XML參數(shù)。
5. XML Web service 方法執(zhí)行,最終設置返回值和輸出參數(shù)。
6. XML Web service 服務方的底層結(jié)構將返回值和數(shù)除參數(shù)序列化為SOAP消息。并通過網(wǎng)絡發(fā)回客戶端。
7. 客戶端的底層結(jié)構接收到上面的SOAP消息,反序列化XML為返回值和輸出參數(shù)。并將其傳遞給代理類實例。
8. 客戶端接受到返回式和輸出參數(shù)
webService 實現(xiàn)的例子。
1.實現(xiàn)一個WebService,使其能夠接受和響應SOAP消息
2.撰寫一個WSDL文件用于描述此Web Services。
3.將此WSDL發(fā)布到UDDI上
4. 其他的應用程序(客戶端)從UDDI上搜索倒你的WSDL
5.根據(jù)你的WSDL,客戶端編寫程序調(diào)用Web Service.
posted on 2009-03-17 17:24
冰是沒有未來的,因為它的永恒 閱讀(243)
評論(0) 編輯 收藏 所屬分類:
java