版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、2008-2010 by Li Weigang. All rights reserved.服務(wù)計(jì)算基礎(chǔ)服務(wù)計(jì)算基礎(chǔ)主講:李偉剛西北工業(yè)大學(xué)軟件與微電子學(xué)院2008-2010 by Li Weigang. All rights reserved.第八章第八章 Web服務(wù)實(shí)現(xiàn)技術(shù)服務(wù)實(shí)現(xiàn)技術(shù)2008-2010 by Li Weigang. All rights reserved.主要內(nèi)容主要內(nèi)容lWeb服務(wù)開發(fā)方法lWeb服務(wù)運(yùn)行環(huán)境lAXISl基于AXIS的Web服務(wù)開發(fā)2008-2010 by Li Weigang. All rights reserved.第一節(jié)第一節(jié) Web服務(wù)開發(fā)方法服務(wù)
2、開發(fā)方法2008-2010 by Li Weigang. All rights reserved.Two ApproachesServer ImplementationService InterfaceWSDLe.g. EJB/Java Class to WSDLe.g. WSDL contract as the interface & message descriptionServer InterfaceService ImplementationWSDLBottom UpTop Down2008-2010 by Li Weigang. All rights reserved.Web
3、 服務(wù)開發(fā)生命周期服務(wù)開發(fā)生命周期l 開發(fā) 開發(fā)和測(cè)試 Web 服務(wù)實(shí)現(xiàn)、定義服務(wù)接口描述和定義服務(wù)實(shí)現(xiàn)描述。 通過創(chuàng)建新的 Web 服務(wù)、把現(xiàn)有的應(yīng)用程序變成 Web 服務(wù) 由其它 Web 服務(wù)和應(yīng)用程序組成新的 Web 服務(wù)提供 Web 服務(wù)的實(shí)現(xiàn)。l 部署 向服務(wù)請(qǐng)求者或服務(wù)注冊(cè)中心發(fā)布服務(wù)接口和服務(wù)實(shí)現(xiàn)的定義 Web 服務(wù)的可執(zhí)行文件部署到執(zhí)行環(huán)境l 運(yùn)行 調(diào)用 Web 服務(wù) Web 服務(wù)完全部署、可操作并且服務(wù)提供者可以通過網(wǎng)絡(luò)訪問服務(wù)l 管理 持續(xù)的管理和經(jīng)營(yíng) Web 服務(wù)應(yīng)用程序。安全性、可用性、性能、服務(wù)質(zhì)量和業(yè)務(wù)流程2008-2010 by Li Weigang. All r
4、ights reserved.構(gòu)建構(gòu)建Web Servicel1.編寫代碼l2.打包以便布署l3.布署到應(yīng)用服務(wù)器l4.創(chuàng)建WSDL描述 l5. 發(fā)布描述l6. 發(fā)現(xiàn)-通過UDDIl7. 綁定、調(diào)用2008-2010 by Li Weigang. All rights reserved.2008-2010 by Li Weigang. All rights reserved.訪問訪問Web Servicel1. 開發(fā)新應(yīng)用l2. 查詢UDDIl3. 定位Web服務(wù)、下載其描述l4. 根據(jù)描述創(chuàng)建Java client proxy l5. 在應(yīng)用中編寫調(diào)用Java client proxy me
5、thods 代碼l6. 測(cè)試應(yīng)用l7. Java client proxy通過SOAP調(diào)用Web service methods2008-2010 by Li Weigang. All rights reserved.2008-2010 by Li Weigang. All rights reserved.第二節(jié)第二節(jié) Web服務(wù)運(yùn)行環(huán)境服務(wù)運(yùn)行環(huán)境2008-2010 by Li Weigang. All rights reserved.Web Service Runtimel 1. 提交請(qǐng)求(參數(shù))給應(yīng)用服務(wù)器, 服務(wù)器調(diào)用Java servlet.l 2. Servlet調(diào)用本地Java
6、proxy方法,proxy調(diào)用SOAP客戶端運(yùn)行l(wèi) 3. SOAP客戶端發(fā)送HTTP請(qǐng)求(方法、參數(shù))給提供者.l 4. SOAP servlet準(zhǔn)備方法和參數(shù),instantiates服務(wù)bean,調(diào)用服務(wù)方法l 5.訪問legacy資源l 6. SOAP servlet返回結(jié)果給請(qǐng)求者SOAP client.l 7. SOAP client返回結(jié)果給Java proxy.l 8.servlet把結(jié)果放在一個(gè)data bean中,dispatch查詢結(jié)果的JSPl 9. JSP發(fā)送HTML給用戶,頁(yè)面中包含有服務(wù)返回的結(jié)果2008-2010 by Li Weigang. All rights
7、 reserved.2008-2010 by Li Weigang. All rights reserved.第三節(jié)第三節(jié) AXIS2008-2010 by Li Weigang. All rights reserved.Axis IntroductionlAxis是Apache組織推出的Web服務(wù)引擎lAxis本質(zhì)上就是一個(gè)Web服務(wù)引擎,提供創(chuàng)建服務(wù)器端、客戶端和網(wǎng)關(guān)SOAP操作的基本框架。l但Axis還包括:一個(gè)獨(dú)立的Web Service服務(wù)器。一個(gè)嵌入Servlet引擎(Tomcat)的服務(wù)器。支持WSDL。提供轉(zhuǎn)化WSDL為Java類的工具。提供例子程序。提供TCP/IP數(shù)據(jù)包監(jiān)視
8、工具。2008-2010 by Li Weigang. All rights reserved.Axis2體系結(jié)構(gòu)體系結(jié)構(gòu)l AXIS 對(duì)象模型(AXIs Object Model,AXIOM)是 Apache Axis2 的 XML 對(duì)象模型l 內(nèi)核層包含引擎、模塊和部署框架l 所有其他組件都在內(nèi)核之上的層中 各種傳輸協(xié)議(如 HTTP 和 SMTP)和數(shù)據(jù)綁定(在 XML 和 Java 代碼之間進(jìn)行轉(zhuǎn)換)并不在核心中,因?yàn)樗鼈兪强刹迦氲?,因此提供了很大的靈活性 所有其他相關(guān)技術(shù)(如 Java API for XML Web Services (JAX-WS))都在 Axis2 之上的層次中
9、 2008-2010 by Li Weigang. All rights reserved.AXIOMl AXIOM是一個(gè) XML 對(duì)象模型,設(shè)計(jì)用于提高 XML 處理期間的內(nèi)存使用率和性能,基于 Pull 解析l 通過使用 Streaming API for XML (StAX) Pull 解析器,AXIOM可以控制解析過程,以提供延遲構(gòu)建支持 StAX通過提供一種基于事件迭代器(Iterator)的API讓程序員去控制xml文檔解析過程 程序遍歷這個(gè)事件迭代器去處理每一個(gè)解析事件,解析事件可以看做是程序拉出來的,也就是程序促使解析器產(chǎn)生一個(gè)解析事件然后處理該事件,之后又促使解析器產(chǎn)生下一個(gè)
10、解析事件,如此循環(huán)直到碰到文檔結(jié)束符 SAX也是基于事件處理xml文檔,但卻是用推模式解析,解析器解析完整個(gè)xml文檔后,才產(chǎn)生解析事件,然后推給程序去處理這些事件 DOM采用的方式是將整個(gè)xml文檔映射到一顆內(nèi)存樹,這樣就可以很容易地得到父節(jié)點(diǎn)和子結(jié)點(diǎn)以及兄弟節(jié)點(diǎn)的數(shù)據(jù),但如果文檔很大,將會(huì)嚴(yán)重影響性能l 延遲構(gòu)建是指 AXIOM 不完全構(gòu)建XML對(duì)象模型,而是基于用戶的需求構(gòu)建 2008-2010 by Li Weigang. All rights reserved.AXIOM(續(xù))(續(xù))l 例子:從 XML 輸入流中獲得第一個(gè)人的 元素值 XML文檔 Dihini Himahansi F
11、emale Colombo, Sri Lanka - Object model is being built only up to this point Thushari Damayanthi Female Elpitiya, Sri Lanka 2008-2010 by Li Weigang. All rights reserved.AXIOM(續(xù))(續(xù))優(yōu)勢(shì)l盡可能僅使用能滿足用戶的需求的內(nèi)存l如果用戶希望訪問較大的文檔中前面的數(shù)個(gè)字節(jié)或數(shù)千字節(jié),則延遲構(gòu)建功能將改善該應(yīng)用程序的內(nèi)存需求情況l可以從任何元素獲得 StAX 事件,而不管是否完整構(gòu)建了對(duì)象模型 l應(yīng)用案例: 當(dāng) Axis2 作
12、為中介傳遞時(shí),如果需要僅讀取 SOAP 消息的 Header,AXIOM 將防止其讀取整個(gè) SOAP 消息,使其具有很高的內(nèi)存效率 當(dāng) Web 服務(wù)實(shí)現(xiàn)能夠直接使用 StAX 事件時(shí),由于采用了 AXIOM,Web 服務(wù)所需的內(nèi)存非常小 2008-2010 by Li Weigang. All rights reserved.AXIOM(續(xù))(續(xù))lAXIOM 內(nèi)置了消息傳輸優(yōu)化機(jī)制(Message Transfer Optimization Mechanism,MTOM)支持l對(duì)于 AXIOM 體系結(jié)構(gòu),可以通過實(shí)現(xiàn) AXIOM 接口并將其插入到 Axis2 中來執(zhí)行自己的對(duì)象模型lAXIO
13、M 提供了構(gòu)建于基礎(chǔ) AXIOM API 之上的 SOAP 接口 可以使用 envelope.getHeaders 和 envelope.getBody 之類的便利方法查看 SOAP 2008-2010 by Li Weigang. All rights reserved.可擴(kuò)展消息傳遞引擎可擴(kuò)展消息傳遞引擎l Axis2 是一個(gè)純 SOAP 處理器,并不依賴于任何 Java 特定的規(guī)范 l 引擎通過傳輸協(xié)議接收到消息后,將調(diào)用之前注冊(cè)的一系列攔截器(稱為處理程序)l 處理程序通常處理 SOAP Header 內(nèi)的信息,也可以同時(shí)對(duì)消息的其他部分進(jìn)行處理 l 隨后會(huì)將消息傳遞給消息接收者一般將
14、此消息傳遞給服務(wù)實(shí)現(xiàn)類進(jìn)行處理 2008-2010 by Li Weigang. All rights reserved.可擴(kuò)展消息傳遞引擎可擴(kuò)展消息傳遞引擎 (續(xù))(續(xù))l Axis2 的管道模型 Axis2 引擎的傳入消息會(huì)通過“In”管道。所有傳出消息都會(huì)通過“Out”管道通過組合使用不同數(shù)量的 In 和 Out 管道,Axis2 可以處理任何 MEP(Message Exchange Pattern)l 階段每個(gè) Axis2 管道內(nèi)部被邏輯劃分為名為階段 (Phase) 的區(qū)域按特定的方式對(duì)這些階段進(jìn)行命名,以表示在該階段對(duì)消息的處理方式這些階段都會(huì)有用處,特別是嘗試部署新處理程序時(shí),
15、因?yàn)槲覀兛梢灾付ㄌ幚沓绦蛐枰谀膫€(gè)階段中執(zhí)行 2008-2010 by Li Weigang. All rights reserved.可擴(kuò)展消息傳遞引擎可擴(kuò)展消息傳遞引擎 (續(xù))(續(xù))l上下文層次結(jié)構(gòu) Axis2 環(huán)境需要在不同的級(jí)別保存信息l例如,整個(gè)引擎公用的信息應(yīng)該在系統(tǒng)級(jí)別進(jìn)行維護(hù),而消息級(jí)別的信息應(yīng)該保存在消息級(jí)別。有些信息是動(dòng)態(tài)的,而有些信息是靜態(tài)的為了處理這些不同的需求,Axis2 提供了上下文層次結(jié)構(gòu)來在不同級(jí)別維護(hù)信息 2008-2010 by Li Weigang. All rights reserved.可擴(kuò)展消息傳遞引擎可擴(kuò)展消息傳遞引擎 (續(xù))(續(xù))l調(diào)度 傳入 A
16、xis2 引擎的每條消息都以特定服務(wù)和操作為目標(biāo)。標(biāo)識(shí)此服務(wù)/操作組合的過程稱為調(diào)度,Axis2 引擎提供了進(jìn)行此工作的四種基本方法: l基于請(qǐng)求基于請(qǐng)求 URI 進(jìn)行調(diào)度進(jìn)行調(diào)度 l傳輸信息:傳輸信息:可以將 SOAPAction HTTP Header 用于確定服務(wù)和操作lWS-Addressing Header:如果傳入消息包含 WS-Addressing Header,也可以將其用于進(jìn)行調(diào)度 l如果 SOAP 主體的第一個(gè)子項(xiàng)的 QName 是使用 RPC 規(guī)則定義的,則也可以使用此名稱 2008-2010 by Li Weigang. All rights reserved.可插入模
17、塊體系結(jié)構(gòu)可插入模塊體系結(jié)構(gòu)l模塊為服務(wù)器提供了一個(gè)擴(kuò)展機(jī)制lAxis2 中的每個(gè)模塊都包含一組相關(guān)的處理程序2008-2010 by Li Weigang. All rights reserved.可插入模塊體系結(jié)構(gòu)(續(xù))可插入模塊體系結(jié)構(gòu)(續(xù))l模塊的類型Sandesha2 模塊:模塊:提供 WS-Reliable Messaging 支持 WS-Addressing 模塊:模塊:為 Axis2 提供 WS-Addressing 支持 Rampart 和和 Rahas 模塊:模塊:提供 WS-SX(安全相關(guān)規(guī)范)支持 Kandula 模塊:模塊:提供 WS-AT (原子事務(wù)性)支持 Sav
18、an 模塊:模塊:提供 WS-Eventing 支持 2008-2010 by Li Weigang. All rights reserved.可插入模塊體系結(jié)構(gòu)(續(xù))可插入模塊體系結(jié)構(gòu)(續(xù))l模塊的級(jí)別系統(tǒng)級(jí)別:系統(tǒng)級(jí)別:模塊將影響整個(gè)系統(tǒng),此模塊中的處理程序?qū)?yīng)用于傳入系統(tǒng)的所有消息服務(wù)級(jí)別:服務(wù)級(jí)別:此模塊中的處理程序?qū)?yīng)用于以特定服務(wù)為目標(biāo)的消息。這些處理程序應(yīng)該始終部署在調(diào)度階段后操作級(jí)別:操作級(jí)別:此模塊中的處理程序?qū)?yīng)用于以特定操作為目標(biāo)的消息。這些處理程序應(yīng)該始終部署在調(diào)度階段后2008-2010 by Li Weigang. All rights reserved.改進(jìn)的部署
19、模型改進(jìn)的部署模型lAxis2 現(xiàn)在支持將服務(wù)熱部署到 Axis2 引擎中熱部署l服務(wù)應(yīng)該存檔為 ZIP 文件,且在文件名中使用 .aar(Axis2 存檔,Axis2 archive)作為擴(kuò)展名 l服務(wù)存檔包含以下信息: 服務(wù)實(shí)現(xiàn)類 Services.xml 文件描述其使用的消息接收者、所需的任何模塊和可用的操作 可選依賴庫(kù)打包在 lib 文件夾內(nèi) 2008-2010 by Li Weigang. All rights reserved.其他特性其他特性l 新客戶機(jī) API l 可插入數(shù)據(jù)綁定 l REST 支持 (REpresentational State Transfer,REST)
20、l WSDL 2.0 支持:支持:Axis2 現(xiàn)在支持 WSDL 2.0。我們?cè)谧罱M(jìn)行的互操作性研討會(huì)中成功地進(jìn)行了初始互操作性測(cè)試。 l 工具支持:工具支持:Axis2 隨附了 WSDL2Java 和 Java2WSDL 工具,同時(shí)提供了與 Axis2 協(xié)同工作的 Eclipse 插件l 各種傳輸協(xié)議支持:各種傳輸協(xié)議支持: Axis2 支持 HTTP、SMTP、TCP 和 JMSl Spring 支持:支持:Axis2 內(nèi)置了 Spring 服務(wù)支持。您可以編寫 Spring Bean,然后方便地使用 Axis2 將其作為 Web 服務(wù)公開l WS-Policy 集成:集成:Axis2
21、完全支持 WS-Policy,該規(guī)范已集成到了引擎的核心中2008-2010 by Li Weigang. All rights reserved.第四節(jié)第四節(jié) 基于基于AXIS的的Web服務(wù)開發(fā)服務(wù)開發(fā)2008-2010 by Li Weigang. All rights reserved.Publishing and Consuming Web Services with AxisTomcatAXIS*.jws?wsdlClient SideJava Class*.jws*.jws?wsdlwsdlJava2WSDLwsdlAXISJava Class*.javawsdlWSDL2Java
22、2008-2010 by Li Weigang. All rights reserved.Invoking a SOAP Service with AxisTomcatAXISSOAP RequestSOAP RequestSOAP ReplyXercesSOAP ReplyAXISXercesClient Side Web ServiceReplyRPCInvokeReplyServer Side Web Service2008-2010 by Li Weigang. All rights reserved.Axis服務(wù)器端部署的三種方式服務(wù)器端部署的三種方式lJava源程序直接發(fā)布*.jw
23、sl通過編寫wsdd文件部署。l通過生成的Skelton類在服務(wù)器上部署2008-2010 by Li Weigang. All rights reserved.Axis客戶端調(diào)用客戶端調(diào)用Web服務(wù)的三種方式服務(wù)的三種方式l動(dòng)態(tài)調(diào)用接口模型l動(dòng)態(tài)代理模型l靜態(tài)存根模型2008-2010 by Li Weigang. All rights reserved.動(dòng)態(tài)調(diào)用接口模型動(dòng)態(tài)調(diào)用接口模型l利用RPC中的Call類對(duì)象來實(shí)現(xiàn)對(duì)遠(yuǎn)程服務(wù)的調(diào)用和訪問的一種模型,其核心在于Call對(duì)象的實(shí)現(xiàn)。l對(duì)每個(gè)Web服務(wù)的每一個(gè)遠(yuǎn)程方法調(diào)用,DII模型都要生成一個(gè)新的Call對(duì)象,并可以根據(jù)該服務(wù)的WSDL文檔描述對(duì)Call對(duì)象進(jìn)行配置,最終利用Call對(duì)象實(shí)現(xiàn)該遠(yuǎn)程方法的調(diào)用。 2008-2010 by Li Weigang. All rights reserved.動(dòng)態(tài)代理模型動(dòng)態(tài)代理模型l利用java反射(reflection)機(jī)制中Proxy類對(duì)象來實(shí)現(xiàn)對(duì)遠(yuǎn)程服務(wù)的調(diào)用和訪問的一種模型,其核心在于與Proxy對(duì)象相關(guān)聯(lián)的InvocationHandler的實(shí)現(xiàn)。l對(duì)于每個(gè)不同的Web服務(wù),客戶端應(yīng)用程序都需要在運(yùn)行時(shí)訪問服務(wù)的WSDL文檔,生成一個(gè)服務(wù)的本地對(duì)象(Service),然后由該對(duì)象根據(jù)WSDL文檔相應(yīng)描述(PortName)取得接口的對(duì)應(yīng)動(dòng)態(tài)代理對(duì)象,利用生成的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 工業(yè)商品交易合同范例
- 房屋買賣合同協(xié)議書撰寫指南
- 2024年門衛(wèi)值班人員聘用合同協(xié)議
- 個(gè)人借款延期還款協(xié)議書范例
- 工廠土地轉(zhuǎn)讓合同樣本
- 產(chǎn)品加工項(xiàng)目合作協(xié)議書范本
- 2024年勞務(wù)合同與勞務(wù)協(xié)議書
- 合同范本編寫指南
- 出口凍肉禽協(xié)議模板樣本
- 山東產(chǎn)銷合作聯(lián)盟協(xié)議
- 中職院校學(xué)前教育專業(yè)學(xué)生職業(yè)認(rèn)同現(xiàn)狀調(diào)查研究
- join-in(三年級(jí)起點(diǎn))五年級(jí)上冊(cè)劍橋英語(yǔ)備課
- 點(diǎn)火源的種類及安全控制對(duì)策
- 23J916-1:住宅排氣道(一)
- 儲(chǔ)能項(xiàng)目用戶側(cè)投資測(cè)算表
- 古錢幣優(yōu)秀課件
- 辦公室工作流程圖課件
- 東北風(fēng)俗文化介紹-小學(xué)生講民俗課件
- 初二上冊(cè)傳統(tǒng)文化魯教版
- 管道流量計(jì)算
- 管理英語(yǔ)3課件
評(píng)論
0/150
提交評(píng)論