發(fā)布時(shí)間:2022年04月15日 06:36:40分享人:潮男來源:互聯(lián)網(wǎng)10
WebService是目前使 用最廣、功能最全、標(biāo)準(zhǔn)化程度最高的遠(yuǎn)程技術(shù),包含服務(wù)提供者,服務(wù)調(diào)用者,服務(wù)代理(UDDI)三個(gè)角色,其中服務(wù)提供者負(fù)責(zé)開發(fā)一些特定的服務(wù),并在UDDI中注冊(cè),方便其他服務(wù)調(diào)用者發(fā)現(xiàn)和使用該服務(wù),服務(wù)代理對(duì)外提供服務(wù)的注冊(cè)和服務(wù)查詢的功能 ...一、綜述WebService是目前使用最廣、功能最全、標(biāo)準(zhǔn)化程度最高的遠(yuǎn)程技術(shù),包含服務(wù)提供者,服務(wù)調(diào)用者,服務(wù)代理(UDDI)三個(gè)角色,其中服務(wù)提供者負(fù)責(zé)開發(fā)一些特定的服務(wù),并在UDDI中注冊(cè),方便其他服務(wù)調(diào)用者發(fā)現(xiàn)和使用該服務(wù),服務(wù)代理對(duì)外提供服務(wù)的注冊(cè)和服務(wù)查詢的功能,服務(wù)調(diào)用者則是服務(wù)的消費(fèi)者,可以從UDDI中查詢需要的服務(wù)的wsdl地址,并通過wsdl調(diào)用該服務(wù),獲取服務(wù)返回結(jié)果,整個(gè)服務(wù)的通信過程是通過SOPA協(xié)議來完成的,WebService中各角色之間的關(guān)系請(qǐng)參照?qǐng)D1所示:圖1 WebService原理XFire是目前較為流行的WebService框架,為Spring提供很好的支持,這使得我們可以很容易在Spring中使用XFire構(gòu)建WebService應(yīng)用,接下來將對(duì)Xfire的關(guān)鍵技術(shù)做一些介紹。二、關(guān)鍵技術(shù)介紹XFire通過調(diào)用ServiceFactory將一個(gè)POJO轉(zhuǎn)化成為一個(gè)可以被調(diào)用的Service,而且還可以通過Handler定義SOAP發(fā)送和接收之前的各種加工處理邏輯,例如對(duì)SOAP體或者SOAP頭的內(nèi)容進(jìn)行加工處理。1、XFire的數(shù)據(jù)傳輸機(jī)制XFire是基于流數(shù)據(jù)處理進(jìn)行工作的系統(tǒng),它以管道的方式接收SOAP流數(shù)據(jù),具體參照?qǐng)D2所示:圖2 XFire處理SOAP消息的流程請(qǐng)求調(diào)用:調(diào)用者發(fā)出調(diào)用請(qǐng)求后需要經(jīng)過傳輸(Transport)、預(yù)轉(zhuǎn)發(fā)(PreDispatch)、轉(zhuǎn)發(fā)(Dispatch)、策略實(shí)施(Policy)、用戶信息處理(User)、預(yù)調(diào)用(PreInvoke)、服務(wù)調(diào)用(ServiceInvocation)等階段。響應(yīng)請(qǐng)求:XFire生成響應(yīng)SOAP消息并通過管道發(fā)送給客戶端請(qǐng)求者,這一過程會(huì)先后經(jīng)歷調(diào)用后(PostInvoke)、用戶信息處理(User)、策略實(shí)施(Policy)、傳輸(Transport)四個(gè)階段。由于這種方式不需要將SOAP的整個(gè)文檔緩存在內(nèi)存中,不僅帶來了可觀的性能回報(bào),還節(jié)省了內(nèi)存的占用率。2、XFire的安全方案 XFire通過Apache的WSS4J對(duì)WS-Security(Web服務(wù)安全)提供支持,WS-Security是一種提供在Web服務(wù)上應(yīng)用安全的方法的網(wǎng)絡(luò)傳輸協(xié)議,包含了關(guān)于如何在Web服務(wù)消息上保證完整性和機(jī)密性的規(guī)約。XFire通過Handler實(shí)施WSS4J,當(dāng)發(fā)送SOAP報(bào)文時(shí),通過注冊(cè)一系列OutHandler,對(duì)SOAP報(bào)文進(jìn)行加密、簽名、添加用戶身份信息等后置處理操作。而在接收SOAP報(bào)文時(shí),則通過注冊(cè)一系列的InHandler對(duì)SOAP進(jìn)行解密、驗(yàn)證簽名,用戶身份認(rèn)證等前置操作。請(qǐng)求和響應(yīng)的SOAP在發(fā)送之前可以通過注冊(cè)的OutHanlder進(jìn)行加工處理,讓SOAP轉(zhuǎn)換為WS-Security的保護(hù)格式。而服務(wù)端和客戶端在接收SOAP報(bào)文之前,可以通過注冊(cè)的InHandler,將WS-Security格式的SOAP轉(zhuǎn)換為正常的SOAP進(jìn)行處理。三、XFire中傳輸復(fù)雜類型XFire通過ServiceFactory將一個(gè)POJO轉(zhuǎn)化為一個(gè)service時(shí)如果輸入輸出參數(shù)為簡單類型如String,int,long等基本類型組成時(shí)無須進(jìn)行額外的映射設(shè)置,但是對(duì)于復(fù)雜類型的輸入輸出參數(shù)時(shí)XFire會(huì)默認(rèn)通過Aegis綁定將其序列化。假設(shè)存在一個(gè)類UserINfo包含一個(gè)ArrayList的屬性roleList,使用Aegis對(duì)該類進(jìn)行其綁定的方法:首先:建一個(gè)UserInfo.aegis.xml的文件接著:在xml文件中添加對(duì)roleList的配置如:<propertyname="roleList" componentType="com.domain.Role"/>XFire1.2.6工作在Java5上時(shí)支持的類型包括:| 基本類型:int, double, float, long,byte[], short, String, BigDecimal(直接解析) |
| Java enum 類型(直接解析) |
| Arrays<泛型> |
| Collections<泛型> |
| 僅包含java的基本類型的javaBean |
| 時(shí)間類型:java.util.Date,java.util.Calendar, java.sql.Timestamp, java.sql.Date,java.sql.Time |
| XML類型:org.w3c.dom.Docmument, org.jdom.Element, XMLStreamReader,Source |
四、總結(jié)1)由于alibaba枚舉不是單純的javaEnum,XFire傳輸時(shí)需要在客戶端和服務(wù)端進(jìn)行注冊(cè)。服務(wù)器端和客戶端配置如圖3,4所示:

圖3 alibaba枚舉服務(wù)器端的配置圖 4 alibaba枚舉客戶端的配置2)Map泛型需要解析map中類型,如果類型是自定義的,則需要Aegis綁定,建一個(gè)*.aegis.xml文件,并在該文件中指定自定義類型。3)抽象類:不能傳遞抽象類,必須在傳遞的過程中實(shí)例化對(duì)象。
愛華網(wǎng)本文地址 » http://www.klfzs.com/a/25101017/350990.html
更多閱讀

通過接近一個(gè)星期的學(xué)習(xí),慢慢的又恢復(fù)了學(xué)習(xí)的感覺,作為辦公軟件雖然在大學(xué)期間沒有經(jīng)過專門的學(xué)習(xí),但還是有所接觸,用得最多的還是Word文檔,Execl用的是最少的了,因?yàn)槠綍r(shí)基本沒有用到它。說用到Word文檔其實(shí)基本上也只是粘貼,復(fù)制文章以

新常態(tài)、新思想、新動(dòng)力圓好德江區(qū)域性教育中心夢(mèng)非常感謝縣委組織部和縣委黨校的關(guān)懷,我有幸參加了德江縣2014年秋季科干班培訓(xùn)學(xué)習(xí)。整個(gè)培訓(xùn)學(xué)習(xí)過程中,我以飽滿的政治熱情、端正的學(xué)習(xí)態(tài)度、嚴(yán)格的組織紀(jì)律和良好的學(xué)習(xí)方式,積極

我對(duì)醫(yī)學(xué)一直很感興趣,希望通過了解和學(xué)習(xí)身體、疾病等方面的醫(yī)學(xué)知識(shí)和內(nèi)容,可以幫助自己、家人和朋友們擁有健康的身體。為此,我看了不少的書、參加了不少的專家講座和培訓(xùn),雖然也收獲了一些醫(yī)學(xué)知識(shí)和技巧,但是我最大的感受是既沒有學(xué)

本次信息技術(shù)與課程整合培訓(xùn)采用遠(yuǎn)程學(xué)習(xí)的方式,學(xué)習(xí)時(shí)間比較自由寬松,在學(xué)習(xí)過程中跟隨各模塊的學(xué)習(xí)目標(biāo)和活動(dòng)展開學(xué)習(xí),為學(xué)習(xí)提供寬松的環(huán)境和自主發(fā)揮的空間,在學(xué)習(xí)過程中不斷的計(jì)劃、不斷地修改設(shè)計(jì)內(nèi)容,逐步完善探究內(nèi)容,結(jié)合自己的

在不少會(huì)計(jì)學(xué)員看來,會(huì)計(jì)課程的學(xué)習(xí)比較單調(diào),整天都在和會(huì)計(jì)分錄以及公式計(jì)算打交道,知識(shí)點(diǎn)非?,嵥?,一般中有特殊,特殊中還有特殊,苦于沒有好的方法去記憶和理解會(huì)計(jì)核算的規(guī)律。應(yīng)該說“書山有路勤為徑,學(xué)海無涯苦作舟”,會(huì)計(jì)學(xué)習(xí)必須依勤