




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第五講Web服務(wù)1 內(nèi) 容一、Web服務(wù)簡(jiǎn)介二、SOAP三、WSDL四、支持Web服務(wù)的J2EE應(yīng)用2一、Web服務(wù)簡(jiǎn)介2000年Microsoft等提出“WebServices”Web服務(wù)(WebServices)是基于XML和HTTP的一種服務(wù)服務(wù)訪問(wèn)協(xié)議:SOAP服務(wù)的描述:WSDL服務(wù)查找與發(fā)現(xiàn):UDDI3SOAP(SimpleObjectAccessProtocol)XML-based(text)協(xié)議支持遠(yuǎn)程通信平臺(tái)中立WSDL(WebServicesDefinitionLanguage)接口描述UDDI(UniversalDescription,Discovery,andIntegration)用于WebServices注冊(cè)用于發(fā)現(xiàn)WebServices4客戶/服務(wù)請(qǐng)求者服務(wù)提供者
注冊(cè)請(qǐng)求/應(yīng)答查找基本結(jié)構(gòu):服務(wù)信息注冊(cè)庫(kù)5提供了軟件模塊之間一種松耦合的交互方式根據(jù)需求通過(guò)網(wǎng)絡(luò)對(duì)松散耦合的粗粒度應(yīng)用組件進(jìn)行分布式部署、組合和使用服務(wù)層是SOA的基礎(chǔ),可以直接被應(yīng)用調(diào)用,從而有效控制系統(tǒng)中與軟件代理的人為依賴性SOA的幾個(gè)關(guān)鍵特性:一種粗粒度、松耦合服務(wù)架構(gòu),服務(wù)之間通過(guò)簡(jiǎn)單、精確定義適配器進(jìn)行通訊,不涉及底層編程適配器和通訊模型6RPCvs.DocumentRPC耦合密切些相對(duì)脆弱僅僅是調(diào)用Document耦合松散些對(duì)應(yīng)用修改適應(yīng)性好沒(méi)有序列化/反序列化問(wèn)題需要額外的設(shè)計(jì)工作需要解釋客戶消息內(nèi)容,然后進(jìn)行相應(yīng)操作7考慮WebServices的幾個(gè)理由業(yè)務(wù)上需要與外部客戶通信技術(shù)上應(yīng)用需要與其它語(yǔ)言編寫的客戶程序通信客戶在防火墻之外管理上管理托管webservice應(yīng)用8什么時(shí)候不要使用WebServices客戶程序與應(yīng)用使用相同語(yǔ)言編寫通信開(kāi)銷大序列化或者遠(yuǎn)程訪問(wèn)開(kāi)銷大WebServices/XML處理開(kāi)銷大“Don’tUseXMLtoCommunicateUnlessYouReally,ReallyHaveTo”–FloydMarinescu,TheMiddlewareCompany永遠(yuǎn)記住:WebServices/XML是用于集成的9ApacheAxis(ApacheeXtensibleInteractionSystem)
是ApacheWebService項(xiàng)目中的子項(xiàng)目最初起源于IBM的"SOAP4J“最早的一批用于構(gòu)造基于SOAP應(yīng)用的FrameworkJBoss,WAS等重要的應(yīng)用服務(wù)器都集成它典型的Web服務(wù)支持平臺(tái)10服務(wù)務(wù)器器端端AXIS句句柄柄鏈鏈處處理理架架構(gòu)構(gòu)用戶戶配配置置一一系系列列的的handler,,構(gòu)構(gòu)成成handlerchainAXIS依依次次調(diào)調(diào)用用handler處處理理消消息息((含含context))類似似于于interceptor((截截取取器器))11客戶戶端端AXIS句句柄柄鏈鏈處處理理架架構(gòu)構(gòu)12AXIS的的子子系系統(tǒng)統(tǒng)13二、、SOAP1、、SOAP概述述2、、數(shù)據(jù)據(jù)表表示示3、、消息息格格式式4、、協(xié)議議映映射射141、、SOAP概述述許多多程程序序通通過(guò)過(guò)使使用用遠(yuǎn)遠(yuǎn)程程過(guò)過(guò)程程調(diào)調(diào)用用((RPC))在諸諸如如DCOM與與CORBA等等對(duì)對(duì)象象之之間間進(jìn)進(jìn)行行通通信信但RPC會(huì)會(huì)產(chǎn)產(chǎn)生生兼兼容容性性以以及及安安全全問(wèn)問(wèn)題題;;防火火墻墻和和代代理理服服務(wù)務(wù)器器通通常常會(huì)會(huì)阻阻止止此此類類流流量量通過(guò)過(guò)HTTP在在應(yīng)應(yīng)用用程程序序間間通通信信是是更更好好的的方方法法因?yàn)闉镠TTP得得到到了了所所有有的的因因特特網(wǎng)網(wǎng)瀏瀏覽覽器器及及服服務(wù)務(wù)器器的的支支持持SOAP就就是是被被創(chuàng)創(chuàng)造造出出來(lái)來(lái)完完成成這這個(gè)個(gè)任任務(wù)務(wù)的的152000年年5月月,,UserLand、、Ariba、、CommerceOne、、Compaq、、Developmentor、、HP、、IBM、、IONA、、Lotus、、Microsoft以以及及SAP向向W3C提提交交了了SOAP因因特特網(wǎng)網(wǎng)協(xié)協(xié)議議期望望此此協(xié)協(xié)議議能能夠夠通通過(guò)過(guò)使使用用因因特特網(wǎng)網(wǎng)標(biāo)標(biāo)準(zhǔn)準(zhǔn)((HTTP以以及及XML))把把圖圖形形用用戶戶界界面面桌桌面面應(yīng)應(yīng)用用程程序序連連接接到到因因特特網(wǎng)網(wǎng)服服務(wù)務(wù)器器首個(gè)個(gè)關(guān)關(guān)于于SOAP的的公公共共工工作作草草案案由由W3C在在2001年年12月月發(fā)發(fā)布布SOAP1.2于于2003年年6月月被被發(fā)發(fā)布布為為W3C推推薦薦標(biāo)標(biāo)準(zhǔn)準(zhǔn)16簡(jiǎn)單單對(duì)對(duì)象象訪訪問(wèn)問(wèn)協(xié)協(xié)議議((SOAP)是網(wǎng)網(wǎng)絡(luò)絡(luò)環(huán)環(huán)境境中中交交換換信信息息的的簡(jiǎn)簡(jiǎn)單單協(xié)協(xié)議議為網(wǎng)網(wǎng)絡(luò)絡(luò)環(huán)環(huán)境境下下軟軟件件之之間間結(jié)結(jié)構(gòu)構(gòu)化化、、類類型型化化信信息息的交交換換提供供了了一一種種基基于于XML的機(jī)機(jī)制制它可可以以廣廣泛泛地地用用于于基基于于消消息息的的系系統(tǒng)統(tǒng)和和基基于于RPC的系統(tǒng)SOAP被設(shè)計(jì)為可以以與各種其它它協(xié)議結(jié)合使使用但目前SOAP主要和HTTP及HTTP擴(kuò)展框架相結(jié)結(jié)合17簡(jiǎn)單地講,SOAP=HTTP+RPC+XML即:SOAP以HTTP作為底層通訊訊協(xié)議以RPC作為一致性的的調(diào)用途徑以XML作為數(shù)據(jù)傳送送的格式SOAP的設(shè)設(shè)計(jì)原則是:簡(jiǎn)單、易易于擴(kuò)展SOAP的的設(shè)計(jì)計(jì)忽略略了如如下幾幾方面面的功功能::(1))分布布式垃垃圾回回收(2))消息息的批批處理理(3))對(duì)象象引用用(4))對(duì)象象激活活18SOAP的數(shù)據(jù)據(jù)表示示完全全不同同于以以往互互操作作協(xié)議議的表表示方方法以往的的互操操作協(xié)協(xié)議都都將調(diào)調(diào)用語(yǔ)語(yǔ)句編編排為為二進(jìn)制制的字字節(jié)流流的形形式SOAP采用XML作為自自己的的數(shù)據(jù)據(jù)表示示方法法XML是與HTML類似的的基于于文本本的標(biāo)標(biāo)記語(yǔ)語(yǔ)言SOAP將調(diào)用用語(yǔ)句句編排排為文文本式式的字字符流流的形形式2、數(shù)據(jù)表表示19SOAP消息是是一個(gè)個(gè)XML文檔包括:一個(gè)必需需的SOAP封裝一個(gè)可選選的SOAP頭一個(gè)必需需的SOAP體3、消息息格式20SOAP封裝定義義了描述述信息和和如何處處理信息息的框架架用于指定定用XMLSchema來(lái)描述XML數(shù)據(jù)的編編碼規(guī)則則封裝可以以包含名名域聲明明和附加加屬性如果包含含附加屬屬性,這這些屬性性必須限限定名字字域類似的,,“Envelope””可以包含含附加子子元素這些也必必須限定定名字域域且跟在在SOAP體元素之之后(1)SOAP封裝21SOAP消息頭是是SOAP消息的可可選部分分用來(lái)擴(kuò)展展其它諸諸如安全全、事務(wù)務(wù)等服務(wù)務(wù)的重要要機(jī)制如果出現(xiàn)現(xiàn)的話,,必須是是SOAP封裝元素素的第一一個(gè)直接接子元素素SOAP頭可以包包含多個(gè)個(gè)SOAP塊每個(gè)都是是SOAP頭元素的的直接子子元素所有SOAP頭的直接接子元素素都必須須限定名名字域(2)SOAP消息頭22SOAP體在SOAP消息中必必須出現(xiàn)現(xiàn)且必須是是SOAP封裝元素素的直接接子元素素SOAP體可以包包括多個(gè)個(gè)條目每個(gè)條目目必須是是SOAP體元素的的直接子子元素SOAP體元素的直直接子元素素可以限定定名字域(3)SOAP體23SOAP自然地遵循循HTTP的請(qǐng)求/應(yīng)答消息模模型使得SOAP的請(qǐng)求和應(yīng)應(yīng)答參數(shù)可可以包含在在HTTP請(qǐng)求和應(yīng)答答中SOAPHTTP遵循HTTP中表示通信狀狀態(tài)信息的的HTTP狀態(tài)碼的語(yǔ)語(yǔ)義例如,2xx狀態(tài)碼表示示這個(gè)包含了了SOAP組件的客戶戶請(qǐng)求已經(jīng)被成功功的收到、、理解和接接受下頁(yè)的代碼碼是一個(gè)使用用POST的SOAPHTTP例子子該消息通過(guò)過(guò)HTTP發(fā)出一條條請(qǐng)求“獲取股票票代碼為ABC的最新交易易價(jià)格”24251、互操作開(kāi)開(kāi)銷不同IIOP、JRMP使用二進(jìn)制制的字節(jié)流流形式編排排消息(CDR、XDR)SOAP采用字符型型的XML編排消息SOAP消息要比IIOP、JRMP消息長(zhǎng)得多多SOAP的編排開(kāi)銷銷大、占用用內(nèi)存空間間大2、表達(dá)能力力不同SOAP易于學(xué)習(xí)、、易于開(kāi)發(fā)發(fā)、易于調(diào)調(diào)試SOAP不支持消息息的批處理理、對(duì)象引引用、對(duì)象象激活等特特性降低了SOAP的表達(dá)能力力并使得基于于SOAP的交互受到到限制而IIOP、JRMP等則不存在在這種限制制與其它協(xié)議議的比較263、適應(yīng)能力力不同IIOP、JRMP嚴(yán)重制約于于防火墻防火墻一般般由兩個(gè)路路由器與一一個(gè)應(yīng)用程程序網(wǎng)關(guān)構(gòu)構(gòu)成路由器負(fù)責(zé)責(zé)IP層的分組信信息列出可接受受、禁止的的源端和目目標(biāo)端等信信息應(yīng)用程序網(wǎng)網(wǎng)關(guān)在應(yīng)用用程序級(jí)進(jìn)進(jìn)行控制根據(jù)頭信息息字段、消消息長(zhǎng)度、、消息內(nèi)容容等決定傳送還還是丟棄消消息這是IIOP、JRMP的應(yīng)用受到到限制的核核心因素之之一SOAP則基本不受受其限制4、適用環(huán)環(huán)境不同JRMP適適用于使用用JAVA的應(yīng)用系系統(tǒng)IIOP、、SOAP支持各種種語(yǔ)言,因因此適用面面更廣IIOP適適合于同一一個(gè)防火墻墻內(nèi)部之間間的交互而SOAP則適合于于跨越防火火墻的交互互27三、WSDL1、概述2、文檔結(jié)結(jié)構(gòu)3、例子4、向SOAP的映映射281、概述WSDL(WebServicesDescriptionLanguage)是一個(gè)建建議性標(biāo)準(zhǔn)準(zhǔn)在Microsoft的SDL(ServiceDescriptionLanguage和SCL(SOAPContractLanguage)和IBM的NASSL(NetworkAccessibleServiceSpecificationLanguage)這這兩項(xiàng)技術(shù)術(shù)的結(jié)合,,形成了WSDL的的基礎(chǔ)2000年年9月25日IBM、Microsoft和Ariba提出WSDL1.02001年年3月15日,他們們提交的WSDL1.1成為為W3C的的Note2002年年7月9日日提出WSDL1.22003年年11月10日提出出WSDL2.029類型消息端口類型綁定服務(wù)操作操作端口抽象定義具體說(shuō)明WSDL文檔代表依賴關(guān)關(guān)系代表包含關(guān)關(guān)系2、文檔結(jié)結(jié)構(gòu)30類型:獨(dú)立于計(jì)計(jì)算機(jī)和語(yǔ)語(yǔ)言的類型型定義使用某一類類型系統(tǒng)((例如XSD)進(jìn)行數(shù)據(jù)據(jù)類型定義義的容器用用于描述述被交換的的消息消息:對(duì)通信數(shù)數(shù)據(jù)的一個(gè)個(gè)抽象、類類型化定義義一個(gè)消息包包含多個(gè)邏邏輯部分每一個(gè)都與與某一個(gè)類類型系統(tǒng)中中的定義相相關(guān)聯(lián)包含函數(shù)參參數(shù)(輸入入與輸出分分開(kāi))或文文檔說(shuō)明端口類型:由一個(gè)或或多個(gè)端點(diǎn)點(diǎn)支持操作作的抽象集集合每個(gè)操作對(duì)對(duì)應(yīng)于一個(gè)個(gè)輸入消息息與一個(gè)輸輸出消息它引用消息息節(jié)中的消消息定義來(lái)來(lái)說(shuō)明函數(shù)數(shù)基調(diào)操作名稱、、輸入?yún)?shù)數(shù)和輸出參參數(shù)等(1)抽象定義義31綁定:為一個(gè)由由特定端口口類型定義義的操作與與消息指定具體的的協(xié)議及數(shù)數(shù)據(jù)格式規(guī)規(guī)范服務(wù):指定每個(gè)個(gè)綁定的端端口地址(2)具體說(shuō)明明323、例子33<bindingname="SimpleBinding"type="wsdlns:SimplePortType"><stk:bindingpreferredEncoding="UTF-8"/><soap:bindingstyle="rpc"transport="/soap/http"/><operationname="foo"><soap:operationsoapAction="/action/Simple.foo"/><input><soap:bodyuse="encoded"namespace="/message/"encodingStyle="/soap/encoding/"/></input><output><soap:bodyuse="encoded"namespace="/message/"encodingStyle="/soap/encoding/"/></output></operation></binding><servicename="FOOSAMPLEService"><portname="SimplePort"binding="wsdlns:SimpleBinding"><soap:addresslocation="http://carlos:8080/FooSample/FooSample.asp"/></port></service></definitions>34interfaceFooSample{longfoo(longarg);}用OMG-IDL表表示為:35對(duì)應(yīng)的SOAP請(qǐng)求求消息為::<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><SOAP-ENV:EnvelopeSOAP-ENV:encodingStyle="/soap/encoding/"xmlns:SOAP-ENV="/soap/envelope/"><SOAP-ENV:Body><m:fooxmlns:m="/message/"><arg>5131953</arg></m:foo></SOAP-ENV:Body></SOAP-ENV:Envelope>4、向SOAP的映映射36<?xmlversion="1.0"encoding="UTF-8"standalone="no"?><SOAP-ENV:EnvelopeSOAP-ENV:encodingStyle="/soap/encoding/"xmlns:SOAP-ENV="/soap/envelope/"><SOAP-ENV:Body><SOAPSDK1:fooResponsemlns:SOAPSDK1="/message/"><result>5131953</result></SOAPSDK1:fooResponse></SOAP-ENV:Body></SOAP-ENV:Envelope>37與其它描述述方法的比比較有的以描述述結(jié)構(gòu)化程程序的功能能為主例如RPC-IDL微軟的-IDL有的以描述述對(duì)象的功功能為主例如CORBA的IDL有的以描述述服務(wù)為主主例如webservice的WSDL1、描述對(duì)象象不同38有的以具體體計(jì)算機(jī)語(yǔ)語(yǔ)言的方式式表達(dá)例如SUN的JavaInterface有的以獨(dú)立立于具體的的計(jì)算機(jī)語(yǔ)語(yǔ)言但十分類似似于計(jì)算機(jī)機(jī)語(yǔ)言的方方式表達(dá)例如:RPC-IDL微軟的-IDLCORBA的IDL有的以XML為方式表達(dá)達(dá)例如:webservice的WSDL2、描述方式式不同39有的僅描述述接口的語(yǔ)語(yǔ)法信息例如:RPC-IDL微軟的-IDLCORBA的IDL有的還包括與與底層協(xié)議的的綁定信息例如:WSDL等在CORBA中這部分信息息包含在IOR中3、描述內(nèi)容不不同40如何為web系統(tǒng)增增加webservices接口口下面模塊可以以暴露為WebServices:EJBPOJO后面的例子針針對(duì)EJB四、支持Web服務(wù)的的J2EE應(yīng)應(yīng)用41JAX-RPC:JavaAPIforXML-basedRPCJava世界界的webservice編編程模型規(guī)范范如何以類似RPC的的方式調(diào)用webserviceJAX—RPC的客戶端端編程模式有有以下的三種種:Staticstub(靜態(tài)的客客戶端存根調(diào)調(diào)用)Dynamicproxy(部部分動(dòng)態(tài)的代代理調(diào)用)Dynamicinvocationinterface(DII)(動(dòng)動(dòng)態(tài)調(diào)用接口口)42三種JAX——RPC的客客戶端編程模模式43Staticstub1)首先通通過(guò)映射轉(zhuǎn)換換將服務(wù)描述述的WSDL文檔生成客客戶端的Javastub2)然后實(shí)實(shí)例化服務(wù)的的locator實(shí)例3)通過(guò)loacator獲得服服務(wù)在客戶端端的代理4)用客戶戶端代理去去調(diào)用服務(wù)44packageitso.test;importjava.io.*;importjava.util.*;importitso.test.*;publicclassWeatherForecastClient{publicstaticvoidmain(String[]args){try{WeatherForecastServiceLocatorwsl=newWeatherForecastServiceLocator();WeatherForecastServicews=(WeatherForecastService)wsl.getWeather();Stringtemperature=ws.getTemperature();System.out.println(temperature);System.out.println("WeatherForecastClientcompleted");}catch(Exceptione){e.printStackTrace();}}}45Dynamicproxy與Staticstub不同的的是可以指定定生成的客戶戶端代理46一個(gè)汽車網(wǎng)站站的例子例子構(gòu)成:JSPsControllerServletStatelessSessionBean–InventoryFacadeBeanHibernateDAOs暴露對(duì)象:InventoryFacadeBean.findAllAvailableCars()47服務(wù)端點(diǎn)接口口將業(yè)務(wù)方法暴暴露為WebServices類似于服務(wù)器器端的stub類似于EJBRemoteInterfacepackagecom.jbossatwork.ws;/***ServiceendpointinterfaceforInventoryFacade.*/publicinterfaceInventoryEndpointextendsjava.rmi.Remote{publiccom.jbossatwork.ws.CarDTOArrayfindAvailableCars()throwsjava.rmi.RemoteException;}//InventoryEndpoint.java48修改ejb-jar.xml<enterprise-beans>…<session>…<display-name>InventoryFacadeSB</display-name><ejb-name>InventoryFacade</ejb-name>…<service-endpoint></service-endpoint>…</session>…</enterprise-beans>49webservices.xml定義并并注冊(cè)冊(cè)InventoryServiceWebService將ServiceEndpointInterfaceclass綁綁定到到InventoryFacadeBeanEJB告訴J2EEappserver到到哪哪里找找WSDL與與JAX-RPC映映射射文件件(Mappingfiles,inEJBJARfile))5051JAX-RPC映映射文文件幫助JAX-RPC編編譯譯器將將Java對(duì)對(duì)象映映射到到WSDL對(duì)對(duì)象復(fù)雜的的Java對(duì)對(duì)象導(dǎo)導(dǎo)致復(fù)復(fù)雜的的JAX-RPC與與WSDL文文件件5253<java-xml-type-mapping><java-type>com.jbossatwork.dto.CarDTO</java-type><root-type-qnamexmlns:typeNS="http://localhost:8080/jbossatwork-ws/types">typeNS:CarDTO</root-type-qname><qname-scope>complexType</qname-scope><variable-mapping><java-variable-name>id</java-variable-name><xml-element-name>id</xml-element-name></variable-mapping><variable-mapping><java-variable-name>make</java-variable-name><xml-element-name>make</xml-element-name></variable-mapping><variable-mapping><java-variable-name>model</java-variable-name><xml-element-name>model</xml-element-name></variable-mapping><variable-mapping><java-variable-name>modelYear</java-variable-name><xml-element-name>modelYear</xml-element-name></variable-mapping>54<variable-mapping><java-variable-name>status</java-variable-name><xml-element-name>status</xml-element-name></variable-mapping></java-xml-type-mapping><service-interface-mapping><service-interface>com.jbossatwork.ws.InventoryService</service-interface><wsdl-service-namexmlns:serviceNS="http://localhost:8080/jbossatwork-ws">serviceNS:InventoryService</wsdl-service-name><port-mapping><port-name>InventoryEndpointPort</port-name><java-port-name>InventoryEndpointPort</java-port-name></port-mapping></service-interface-mapping>55<service-endpoint-interface-mapping><service-endpoint-interface></service-endpoint-interface><wsdl-port-typexmlns:portTypeNS="http://localhost:8080/jbossatwork-ws">portTypeNS:InventoryEndpoint</wsdl-port-type><wsdl-bindingxmlns:bindingNS="http://localhost:8080/jbossatwork-ws">bindingNS:InventoryEndpointBinding</wsdl-binding><service-endpoint-method-mapping><java-method-name>findAvailableCars</java-method-name><wsdl-operation>findAvailableCars</wsdl-operation><wsdl-return-value-mapping><method-return-value>com.jbossatwork.dto.CarDTOArray</method-return-value><wsdl-messagexmlns:wsdlMsgNS="http://localhost:8080/jbossatwork-ws">wsdlMsgNS:InventoryEndpoint_findAvailableCarsResponse</wsdl-message><wsdl-message-part-name>result</wsdl-message-part-name></wsdl-return-value-mapping></service-endpoint-method-mapping></service-endpoint-interface-mapping></java-wsdl-mapping>56WSDLFile57<complexTypename="CarDTO"><sequence><elementname="id"type="int"/><elementname="make"type="string"nillable="true"/><elementname="model"type="string"nillable="true"/><elementname="modelYear"type="string"nillable="true"/><elementname="status"type="string"nillable="true"/></sequence></complexType></schema></types><messagename="InventoryEndpoint_findAvailableCars"/><messagename="InventoryEndpoint_findAvailableCarsResponse"><partname="result"type="ns2:CarDTOArray"/></message><portTypename="InventoryEndpoint"><operationname="findAvailableCars"><inputmessage="tns:InventoryEndpoint_findAvailableCars"/><outputmessage="tns:InventoryEndpoint_findAvailableCarsResponse"/></operation></portType>58<bindingname="InventoryEndpointBinding"type="tns:InventoryEndpoint"><soap:bindingtransport="/soap/http"style="rpc"/><operationname="findAvailableCars"><soap:operationsoapAction=""/><input><soap:bodyuse="literal"namespace="http://localhost:8080/jbossatwork-ws"/></input><output><soap:bodyuse="literal"namespace="http://localhost:8080/jbossatwork-ws"/></output></operation></binding><servicename="InventoryService"><portname="InventoryEndpointPort"binding="tns:InventoryEndpointBinding"><soap:addresslocation="REPLACE_WITH_ACTUAL_URL"/></port></service></definitions>59修改WSDLURL60修改EJB/***@ejb.bean*name="InventoryFacade"*……*view-type="all"*…**@wsee.port-component*name="Inventory"*wsdl-port="InventoryEndpointPort"*service-endpoint-interface="com.jbossatwork.ws.InventoryEndpoint"*service-endpoint-bean="com.jbossatwork.ejb.InventoryFacadeBean"**@erface*service-endpoint-class="com.jbossatwork.ws.InventoryEndpoint"**/publicclassInventoryFacadeBeanimplementsSessionBean{…61/***@erface-method*view-type="all"*…**/publicCarDTOArrayfindAvailableCars()throwsEJBException{CarDTOArraycarDTOArray=newCarDTOArray();CarDTO[]cars=(CarDTO[])listAvailableCars().toArray(newCarDTO[0]);carDTOArray.setCars(cars);returncarDTOArray;}/***@erface-method*view-type="both"*…**/publicListlistAvailableCars()throwsEJBException{…}…}62WebServices與與Collectionspackagecom.jbossatwork.dto;importjava.io.Serializable;importcom.jbossatwork.dto.CarDTO;publicclassCarDTOArrayimplementsSerializable{privateCarDTO[]cars;publicCarDTOArray(){}publicCarDTO[]getCars
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度直播平臺(tái)虛擬禮物開(kāi)發(fā)與交易服務(wù)合同范本
- 2025年度源代碼保密協(xié)議書-新能源技術(shù)研發(fā)合作專用版
- 2025年度證券投資財(cái)務(wù)規(guī)劃與咨詢協(xié)議
- 2025年度房產(chǎn)維修基金管理服務(wù)合同-@-1
- 2025年度廢棄塑料回收利用技術(shù)研發(fā)協(xié)議
- 預(yù)見(jiàn)行業(yè)變化的應(yīng)對(duì)計(jì)劃
- 開(kāi)展生物學(xué)科研討會(huì)的計(jì)劃
- 教學(xué)日常檢查與評(píng)估機(jī)制計(jì)劃
- 患者膳食管理經(jīng)驗(yàn)與總結(jié)計(jì)劃
- 協(xié)助學(xué)生進(jìn)行自我評(píng)估的計(jì)劃
- 生理產(chǎn)科學(xué)-正常分娩期的護(hù)理(助產(chǎn)學(xué)課件)
- 中國(guó)商貿(mào)文化 貨幣簡(jiǎn)史
- 高中校本課程-網(wǎng)絡(luò)營(yíng)銷概述教學(xué)設(shè)計(jì)學(xué)情分析教材分析課后反思
- 煤場(chǎng)用車輛倒運(yùn)煤的方案
- PPK計(jì)算模板完整版
- 胸腔閉式引流護(hù)理-中華護(hù)理學(xué)會(huì)團(tuán)體標(biāo)準(zhǔn)
- 居民自建房經(jīng)營(yíng)業(yè)態(tài)不超過(guò)三種承諾書
- 河南省陜州區(qū)王家后鄉(xiāng)滹沱鋁土礦礦產(chǎn)資源開(kāi)采與生態(tài)修復(fù)方案
- 2015-2022年大慶醫(yī)學(xué)高等專科學(xué)校高職單招語(yǔ)文/數(shù)學(xué)/英語(yǔ)筆試參考題庫(kù)含答案解析
- 兩篇古典英文版成語(yǔ)故事塞翁失馬
- 中國(guó)古代文學(xué)史 馬工程課件(中)13第五編 宋代文學(xué) 第一章 北宋初期文學(xué)
評(píng)論
0/150
提交評(píng)論