《Java Web程序設(shè)計及實(shí)踐》課件第10章 SOAP、WSDL和UDDI_第1頁
《Java Web程序設(shè)計及實(shí)踐》課件第10章 SOAP、WSDL和UDDI_第2頁
《Java Web程序設(shè)計及實(shí)踐》課件第10章 SOAP、WSDL和UDDI_第3頁
《Java Web程序設(shè)計及實(shí)踐》課件第10章 SOAP、WSDL和UDDI_第4頁
《Java Web程序設(shè)計及實(shí)踐》課件第10章 SOAP、WSDL和UDDI_第5頁
已閱讀5頁,還剩25頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

目標(biāo)了解SOAP的應(yīng)用背景掌握SOAP的消息結(jié)構(gòu)掌握SOAP消息交換模型了解SOAP的常用應(yīng)用模式理解WSDL的作用熟悉WSDL的文檔結(jié)構(gòu)了解UDDI的作用了解UDDI的實(shí)現(xiàn)機(jī)制了解UDDI的數(shù)據(jù)結(jié)構(gòu)-1-SOAP介紹SOAP是基于XML的協(xié)議,是分布式系統(tǒng)之間交換信息的輕量級方法SOAP的兩個目標(biāo)是簡單性和可擴(kuò)展性SOAP基于XML語言和XSD標(biāo)準(zhǔn),編碼規(guī)則由四部分組成:SOAP信封(Envelope)序列化的機(jī)制SOAPRPC表示SOAP綁定-2-(SimpleObjectAccessProtocol,簡單對象訪問協(xié)議)SOAP消息結(jié)構(gòu)SOAP定義了基于XML的消息文檔、規(guī)則和機(jī)制,可用于實(shí)現(xiàn)應(yīng)用程序之間的通信一條SOAP消息就是一個普通的XML文檔,該文檔包含下列元素:Envelope(信封)元素,必需,可把此XML文檔標(biāo)識為一條SOAP消息Header(報頭)元素,可選,包含頭部信息Body(主體)元素,必需,包含所有的調(diào)用和響應(yīng)信息Fault元素,位于Body內(nèi),可選,提供有關(guān)處理此消息所發(fā)生錯誤的信息attachment(附件),可選,可通過添加一個或多個附件擴(kuò)展SOAP消息-3-SOAP消息結(jié)構(gòu)-4-帶附件的SOAP消息的結(jié)構(gòu)SOAP消息交換模型SOAP消息交換是從發(fā)送方到接收方的一種傳輸方法。從本質(zhì)上說,SOAP是一種無狀態(tài)(stateless)協(xié)議,它提供復(fù)合的單向消息交換框架,以便在稱之為SOAP節(jié)點(diǎn)的SOAP應(yīng)用程序之間傳輸XMLSOAP節(jié)點(diǎn)SOAPactor屬性SOAP消息處理

-5-SOAP應(yīng)用模式為了增強(qiáng)SOAP節(jié)點(diǎn)之間的通信和消息路徑模型,SOAP選擇了一種取決于該通信模型的交互操作模式:-6-基于底層傳輸?shù)恼埱?響應(yīng)模式

SOAP應(yīng)用模式請求/響應(yīng)模式多消息異步響應(yīng)模式單向模式事件通知模式-7-SOAP應(yīng)用模式請求/響應(yīng)模式多消息異步響應(yīng)模式單向模式事件通知模式

-8-WSDL概述WebService是一種定義在Web上的對象,WebService的開發(fā)者需要對服務(wù)的調(diào)用方式進(jìn)行某種結(jié)構(gòu)化的說明,以便服務(wù)的調(diào)用者能夠正確的使用這些服務(wù)。WSDL就是專門用來描述WebService的一種語言,其規(guī)定了一套基于XML的語法,能夠提供關(guān)于WebService的以下4方面的重要信息:描述服務(wù)功能的信息;描述這些功能的傳入(請求)和傳出(響應(yīng))消息的類型信息描述服務(wù)的協(xié)議綁定信息描述用于查找特定服務(wù)的地址信息WSDL把服務(wù)訪問點(diǎn)和消息的抽象化描述與具體的服務(wù)部署和數(shù)據(jù)格式的綁定分離,從而使對服務(wù)的抽象定義可以方便的重用-9-WSDL(WebServiceDescriptionLanguage,WebService描述語言)是一種用來描述WebService的功能特征的語言

WSDL構(gòu)成元素WSDL文檔包含7個關(guān)鍵的構(gòu)成元素:<definitions><types><message><operation><portType><binding><port><service<types>、<message>、<operation>和<portType>元素是WebService的抽象定義,與具體的WebService部署細(xì)節(jié)無關(guān),可以被重用;而<binding>、<port>和<service>元素是WebService的具體描述,其中定義了WebService的技術(shù)細(xì)節(jié)-10-WSDL文檔結(jié)構(gòu)-11-WSDL文檔結(jié)構(gòu)示例代碼:10.D.1weather.wsdl是天氣預(yù)報WebService的WSDL文檔,具體含義分析如下:<definitions>

該元素用來定義WSDL文檔的名稱,引入需要的XML命名空間-12-<definitionsname="Weather" xmlns="/wsdl/" xmlns:soap="/wsdl/soap/" xmlns:tns="/Weather/" xmlns:xsd="/2001/XMLSchema" targetNamespace="/Weather/">WSDL文檔結(jié)構(gòu)<types>元素規(guī)定了與消息相關(guān)的數(shù)據(jù)類型的定義-13-<types><xsd:schematargetNamespace="/Weather/">

<xsd:elementname="WeatherRequest"><xsd:complexType><xsd:sequence><xsd:elementname="city"type="xsd:string"/><xsd:elementname="date"type="xsd:date"/></xsd:sequence></xsd:complexType></xsd:element><xsd:elementname="WeatherResponse"><xsd:complexType><xsd:sequence><xsd:elementname="temperature"type="xsd:int"/><xsd:elementname="humidity"type="xsd:int"/></xsd:sequence></xsd:complexType></xsd:element></xsd:schema></types>WSDL文檔結(jié)構(gòu)<message>

<message>(消息)元素定義了傳遞的消息的數(shù)據(jù)結(jié)構(gòu)<portType>

<portType>(端口類型)元素是抽象操作和抽象消息的組合<binding><service>-14-<messagename="getWeatherRequest"> <partelement="tns:WeatherRequest"name="parameters"/></message><messagename="getWeatherResponse"> <partelement="tns:WeatherResponse"name="parameters"/></message><portTypename="Weather"> <operationname="getWeather"> <inputmessage="tns:getWeatherRequest"/> <outputmessage="tns:getWeatherResponse"/> </operation></portType>WSDL文檔結(jié)構(gòu)<binding>

<binding>(綁定)元素用來具體化<portType>元素,其中定義了<portType>元素中的操作和消息的格式與協(xié)議等-15-<bindingname="WeatherSOAP"type="tns:Weather"> <soap:bindingstyle="document" transport="/soap/http"/> <operationname="getWeather"> <soap:operation soapAction="/Weather/getWeather"/> <input> <soap:bodyuse="literal"/> </input> <output> <soap:bodyuse="literal"/> </output> </operation></binding>WSDL文檔結(jié)構(gòu)<service>

<service>(服務(wù))元素指定了WebService的位置。一個<service>元素可以包含多個<port>(端口)元素,端口的集合構(gòu)成了service。weather.wsdl中的<service>元素如下:-16-<servicename="Weather"> <portbinding="tns:WeatherSOAP"name="WeatherSOAP"> <soap:addresslocation="/"/> </port></service>WSDL綁定綁定指的是將協(xié)議、數(shù)據(jù)格式與<message>、<operation>、<portType>等抽象實(shí)體進(jìn)行關(guān)聯(lián)的過程WSDL中允許在WSDL命名空間定義的元素中使用用戶自定義的元素,這些元素稱為擴(kuò)展元素。擴(kuò)展元素為WSDL提供了強(qiáng)大的擴(kuò)展機(jī)制,WSDL規(guī)范中定義了3種綁定擴(kuò)展:SOAP綁定HTTPGETPOST綁定MIME綁定其中SOAP綁定是最常用的一種方式WSDL1.1針對SOAP1.1定義了綁定擴(kuò)展。-17-WSDL綁定<soap:binding>元素規(guī)定了采用SOAP協(xié)議格式的綁定<soap:binding>元素的style屬性指定了綁定的操作是面向RPC還是面向文檔(document)的,transport屬性指定了SOAP的傳輸類型<soap:operation>元素定義SOAP操作,soapAction屬性指定SOAP消息報頭值-18-<bindingname="WeatherSOAP"type="tns:Weather"> <soap:bindingstyle="document" transport="/soap/http"/> <operationname="getWeather"> <soap:operation soapAction="/Weather/getWeather"/> <input> <soap:bodyuse="literal"/> </input> <output> <soap:bodyuse="literal"/> </output> </operation></binding>UDDI注冊中心UDDI規(guī)范的實(shí)現(xiàn)方案稱為UDDI注冊中心(UDDIRegistry),UDDI注冊中心分為:公共(public)私有(private)UDDI注冊中心的數(shù)據(jù)可以分為三類:白頁:企業(yè)的基本信息,如企業(yè)的名稱、地址、聯(lián)系方式、稅號等;黃頁:根據(jù)企業(yè)的業(yè)務(wù)類別來劃分的信息類別;綠頁:具體描述企業(yè)發(fā)布的WebService的行為和功能等-19-UDDI(UniversalDescription,DiscoveryandIntegration,統(tǒng)一描述、發(fā)現(xiàn)和集成)是一種基于Web的分布式的WebService信息注冊中心的實(shí)現(xiàn)規(guī)范

UDDI數(shù)據(jù)結(jié)構(gòu)UDDI數(shù)據(jù)機(jī)構(gòu)主要包括下列五種元素:<businessEntity><publisherAssertion><businessService><bindingTemplate><tModel>

兩個輔助數(shù)據(jù)結(jié)構(gòu)

表示主數(shù)據(jù)結(jié)構(gòu)的標(biāo)識信息和類別<identifierBag><categoryBag>-20-UDDIAPI查詢API<find_business><find_relatedBusinesses><find_service><find_binding><find_tModel><get_businessDetail><get_businessDetailExt><get_serviceDetail><get_bindingDetail><get_tModelDetail>

-21-UDDIAPI發(fā)布API

<get_authToken><discard_authToken><get_registeredInfo><get_publisherAssertions><set_publisherAssertions><add_publisherAssertions><get_assertionStatusReport><save_business><delete_business><save_service><delete_service><save_binding><delete_binding> <save_tModel><delete_tModel>-22-WSDL映射到UDDIWSDL到UDDI的映射關(guān)系如圖所示:-23-服務(wù)接口映射到tModel在UDDI注冊中心,服務(wù)接口是作為<tModel>元素由服務(wù)接口的提供者發(fā)布的創(chuàng)建tModel的步驟UDDI<tModel>的子元素WSDL服務(wù)接口描述是否必需1<name><definitions>元素的targetNamespace屬性<name>元素使用服務(wù)接口文檔的目標(biāo)名稱空間設(shè)置。名稱需要一致以確保只使用服務(wù)實(shí)現(xiàn)文檔中的信息就可以定位tModel是2<description><definitions>元素的documentation屬性<description>元素被限制為只能使用256個字符。這個元素的值可根據(jù)<definitions>元素的前256個字符設(shè)置。如果<documentation>元素不存在,那么應(yīng)該使用<definitions>元素中的name屬性否3<overviewURL>服務(wù)接口文檔的URL和綁定規(guī)范服務(wù)接口文檔的位置必須在<overviewURL>元素中設(shè)置。如果服務(wù)接口文檔中有多個綁定,那么必須在URL中對綁定進(jìn)行編碼是4<categoryBag>WSDL中沒有對應(yīng)信息<categoryBag>元素必須至少包含一個引用鍵。這個鍵必須包含一個對uddi-org:typestModel的引用,而且鍵名必須是“wsdlSpec”。這個條目把tModel當(dāng)作一個WSDL服務(wù)接口定義是-24-服務(wù)接口映射到tModel根據(jù)表中所列的創(chuàng)建方式,創(chuàng)建<tModel>元素如下-25-<tModeltModelKey=""><name>/StockQuoteService-interface</name><descriptionxml:lang="en"> Standardserviceinterfacedefinitionforastockquoteservice.</description><overviewDoc> <descriptionxml:lang="en"> WSDLServiceInterfaceDocument </description> <overviewURL>/services/SQS-interface.wsdl#SingleSymbolBinding

</overviewURL></overviewDoc><categoryBag> <keyedReferencetModelKey="UUID:C1ACF26D-9672-4404-9D70-39B756E62AB4" keyName="uddi-org:types"keyValue="wsdlSpec"/> <keyedReferencetModelKey="UUID:DB77450D-9FA8-45D4-A7BC-04411D14E384" keyName="Stockmarkettradingservices"keyValue="84121801"/></categoryBag></tModel>服務(wù)實(shí)現(xiàn)映射到businessService在UDDI注冊中心,服務(wù)的實(shí)現(xiàn)是作為帶有一個或多個<bindingTemplate>的<businessService>由服務(wù)提供者發(fā)布的WSDL服務(wù)實(shí)現(xiàn)文檔中定義的每個<service>元素都需要創(chuàng)建一個<businessService>元素下表列出了<businessService>元素的子元素及創(chuàng)建方式,這些元素可根據(jù)WSDL服務(wù)實(shí)現(xiàn)文檔的內(nèi)容創(chuàng)建

子元素名稱WSDL服務(wù)實(shí)現(xiàn)描述

是否必須1<name><service>元素的name屬性<name>元素根據(jù)服務(wù)實(shí)現(xiàn)文檔中的<service>元素的name屬性設(shè)置是2<description><definitions>元素的documentation屬性<description>元素的值根據(jù)與<service>元素關(guān)聯(lián)的<documentation>子元素中的前256個字符設(shè)置。如果<documentation>元素不存在,那么就不創(chuàng)建<description>元素否-26-服務(wù)實(shí)現(xiàn)映射到businessService子元素名稱WSDL服務(wù)實(shí)現(xiàn)描述是否必需1<description><definitions>元素的targetNamespace屬性<description>元素的值根據(jù)與<port>元素關(guān)聯(lián)的<documentation>子元素中的前256個字符設(shè)置。如果<documentation>元素不存在,那么就不創(chuàng)建<description>元素否2<accessPoint><port>元素關(guān)聯(lián)的location屬性<accessPoint>元素根據(jù)與<port>元素關(guān)聯(lián)的擴(kuò)展元素的location屬性設(shè)置。這個元素將包含URL,且URLType屬性是根據(jù)此URL中的協(xié)議設(shè)置的。對于不使用URL規(guī)范的協(xié)議綁定,應(yīng)該使用URLType屬性指出協(xié)議綁定的類型,并且<accessPoint>元素應(yīng)該包含一個可用于定位使用指定協(xié)議的Web服務(wù)的值是3<tModelInstanceInfo>WSDL中沒有對應(yīng)信息<bindingTemplate>元素包含其引用的每個<tModel>元素的一個<tModelInstanceInfo>元素。至少將有一個<tModelInstanceInfo>元素包含對表示服務(wù)接口文檔的<tModel>元素的直接引用是4<overviewURL>WSDL文檔地址<overviewURL>元素可能包含對服務(wù)實(shí)現(xiàn)文檔的一個直接引用,即WSDL文件的地址,這只是為了人來讀取,這個文檔中的其它所有信息都應(yīng)該能夠通過UDDI數(shù)據(jù)實(shí)體訪問。通過維持對原始WSDL文檔的直接引用,可以確保被發(fā)布的文檔就是查找操作返回的文檔。如果這個文檔包含多個端口,那么這個元素應(yīng)該包含對端口名的直接引用。由于可能會有多個端口引用同一個綁定,只使用<tModel>元素中的直接引用是不夠的。端口名被指定為overviewURL上的片段標(biāo)識符。片段標(biāo)識符是URL的一個擴(kuò)展,使用“#”字符作為一個分隔符否WSDL文檔中的<service>元素代表一個服務(wù)的實(shí)現(xiàn),<service>元素的每個<port>元素在UDDI中對應(yīng)一個<bindingTemplate>元素下表列出了<bindingTemplate>元素的子元素及創(chuàng)建方式,這些元素可根據(jù)WSDL服務(wù)實(shí)現(xiàn)文檔的內(nèi)容創(chuàng)建-27-服務(wù)實(shí)現(xiàn)映射到businessService根據(jù)前述兩表中所列的創(chuàng)建方式,創(chuàng)建<businessService>元素如下:<name>StockQuoteService</name><descriptionxml:lang="en"> StockQuoteService</description><bindingTemplates> <bindingTemplatebindingKey="..."serviceKey="..."> <description> SingleSymbolStockQu

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論