mule示例分析_第1頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

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

文檔簡(jiǎn)介

1、mule示例分析一、hello world (主要演示了兩個(gè)service component鏈?zhǔn)胶献魈幚硪粭l消息和消息格式轉(zhuǎn)換1、示例翻譯: 展示了如何配置多個(gè)service components它們與一個(gè)哀求交互(就是說(shuō)二者合作以鏈?zhǔn)椒绞较群筇幚硪粋€(gè)哀求消息,處理的方式是添加消息的內(nèi)容),以及如何管理大事轉(zhuǎn)換(所謂大事就是消息,這里的大事轉(zhuǎn)換是指消息格式的轉(zhuǎn)換,比如從stdio標(biāo)準(zhǔn)輸入中輸入的字符串轉(zhuǎn)換為一個(gè)java bean對(duì)象以及不同java bean之間的轉(zhuǎn)換)。這個(gè)例子還用法了屬性文件來(lái)配置i18n國(guó)際化的消息文字。還有演示了出站過(guò)濾路由。用法了兩個(gè)類也就是兩個(gè)service co

2、mponent組件來(lái)先后處理消息,第一個(gè)是greeter 類,它的greet()辦法 用法localmessage 來(lái)從上面提到的屬性文件獵取greeting問(wèn)候語(yǔ),然后把問(wèn)候語(yǔ)"hello"加到你在控制臺(tái)輸入的名字之前(這樣它就第一次修改了消息的內(nèi)容)。其次個(gè)是chitchatter類,它的chat辦法 把", how are you?"加到消息內(nèi)容之后(這樣它又一次修改了消息內(nèi)容): service name="greeterumo" inbound stdio:inbound-endpoint system="in&q

3、uot; ansfoer-refs="stdintonamestring"/ /inbound component "org.mule.ample.hello.greeter"/ outbound filtering-router vm:outbound-endpoint path="chitchatter"/ payload-type-filter expecttype="org.mule.example.hello.namestring"/ /filtering-router /outbound /servic

4、e 流程是這樣的:行接受用戶輸入 - stdintonamestring轉(zhuǎn)換器將字符串格式的消息轉(zhuǎn)換為namestring類型的java bean - 消息交給greeter組件處理:把"hello"加到了消息內(nèi)容之前 - 處理之后的消息被發(fā)往chitchatter隊(duì)列 - chitchatumo服務(wù)組件)stdintonamestring轉(zhuǎn)換器在之前就定義好了: custom-transformer name="stdintonamestring" "org.mule.example.hello.stdintonamestring"

5、/ 注重: mule是依賴反射獲知greeter內(nèi)部各個(gè)辦法需要的傳參類型,然后再按照目前消息格式調(diào)用正確的消息處理辦法。greeter處理完消息后、mule把消息分發(fā)到了端點(diǎn):vm:/chitchatter:名為chitchatter的in-memory queue內(nèi)存隊(duì)列。chitchatumo服務(wù)組件正在監(jiān)聽這個(gè)隊(duì)列(也就是說(shuō)chitchatter隊(duì)列是 greeterumo的輸出、chitchatumo的輸入,這樣來(lái)使得兩個(gè)服務(wù)組件先后處理一條消息) service name="chitchatumo" inbound vm:inbound-endpoint pat

6、h="chitchatter" transformer-refs="namestringtochatstring"/ /inbound component "org.mule.example.hello.chitchatter"/ outbound pass-through-router stdio:outbound-endpoint system="out" transformer-refs="chatstringtostring" / /pass-through-router /outbou

7、nd /service chitchatumo服務(wù)組件又配置了兩個(gè)轉(zhuǎn)換器:namestringtochatstring、chatstringtostring。chitchatter組件類的輸入?yún)?shù)為 chatstring 類型,所以namestringtochatstring轉(zhuǎn)換器將消息格式從namestring轉(zhuǎn)為 chatstring、然后再調(diào)用 chitchatter組件(流程:greeterumo - vm:/chitchatter - namestringtochatstring - chitchatter - chatstringtostring - system.out)注重ja

8、va bean是不含有任何路由規(guī)律的, mule配置文件將它們組織到一起,任何已有的pojo、web services都可以照此辦理并在它們之間傳輸消息。二、stock quote (演示了如何調(diào)用aspx web service、用法xslt轉(zhuǎn)換、反序列化stockquote java bean以及用法rest和soap調(diào)用服務(wù)。例子需要拜訪互聯(lián)網(wǎng)上的公共.net服務(wù)、主要是咱也不知道人家都有哪些股票代碼有數(shù)據(jù)。源碼就不看了) 1、示例翻譯:通過(guò)system.in接收股票代碼、調(diào)用stockquote服務(wù)、通過(guò)xslt轉(zhuǎn)換器將返回結(jié)果轉(zhuǎn)換格式、通過(guò)xmltoobject轉(zhuǎn)換器再將結(jié)果轉(zhuǎn)換為s

9、tockquote類型、隨后將股票報(bào)價(jià)打印到system.out (例子用到了類似spring的屬性占位符特性來(lái)從配置文件取得一些信息、配置多個(gè)轉(zhuǎn)換器并“串聯(lián)”起來(lái)、其中還用到xslt轉(zhuǎn)換器) model name="sample-rest" service name="httppostsample" inbound vm:inbound-endpoint path="stockquote" responsetransformer-refs="tostring xmldecoder xslt xmltoobject"

10、;/ /inbound http:rest-service-component serviceurl=" httpmethod="post" http:payloadparametername value="symbol"/ /http:rest-service-component /service /model 配置當(dāng)中還用到所謂的rest service component , 它用法了rest服務(wù)包裝器代理了一個(gè)rest服務(wù)、這樣使得該service服務(wù)看上去似乎是本地的component組件普通(和cxf的web服務(wù)包裝器差不多),re

11、st服務(wù)包裝器有一些配置屬性:serviceurl就是 拜訪rest服務(wù)的url、payloadparametername是傳參名 ,本例中惟獨(dú)一個(gè)參數(shù)"symbol"股票代碼、httpmethod是辦法名 get或post。 我任憑傳了個(gè)代碼過(guò)去返回了很多據(jù)的xml: string stockquotes stock symbol 002339 /symbol last 0.00 /last date n/a /date time n/a /time change n/a /change open n/a /open high n/a /high low n/a /low

12、 volume n/a /volume mktcap n/a /mktcap previousclose n/a /previousclose percentagechange n/a /percentagechange annrange n/a - n/a /annrange earns n/a /earns p-e n/a /p-e name 002339 /name /stock /stockquotes /string web service版和rest版原理類似,只是服務(wù)配置是不同的。web service版顯式配置了outbound pass-through路由,它將輸入從一個(gè)en

13、dpoint挺直傳輸?shù)給utbound axis endpoint,不作任何轉(zhuǎn)變或處理。另外outbound endpoint向stock quote service股票報(bào)價(jià)服務(wù)哀求時(shí)是帶參數(shù)的。 model name="sample-soap" service name="serviceproxy" inbound vm:inbound-endpoint path="stockquote" responsetransformer-refs="tostring xmldecoder xslt xmltoobject"

14、;/ /inbound outbound pass-through-router axis:outbound-endpoint aress=" responsetransformer-refs="xmldecoder xslt xmltoobject" soapaction="methodnamespacemethod" axis:soap-method method="qnamegetquote:http:/www.webservicex.net/" axis:soap-parameter parameter="

15、symbol" type="string" mode="in"/ axis:soap-parameter parameter="getquoterelt" type="string" mode="out"/ /axis:soap-method /axis:outbound-endpoint /pass-through-router /outbound /service /model 三、error handler (演示了如何用法spring beans作為service compon

16、ent以及向多個(gè)出站endpoint發(fā)布消息,用法了文件監(jiān)控inbound+郵件outbound)示例包含兩個(gè)services: exceptionmanager 異樣管理器 和 businesserrormanager業(yè)務(wù)錯(cuò)誤管理器。businesserrormanager是個(gè)容易的service,它通過(guò)jms接收業(yè)務(wù)異樣消息并將消息記錄到控制臺(tái),以此仿照真切的異樣處理應(yīng)用。 exceptionmanager接收異樣消息并按照異樣消息的類型舉行某些處理動(dòng)作。例如假如收到致命異樣則會(huì)向系統(tǒng)管理員發(fā)送郵件;收到標(biāo)準(zhǔn)系統(tǒng)異樣則寫入本地文件log,例子演示的不是異樣處理、演示的是:(1)全部的ser

17、vice components都是以spring bean的形式在一個(gè)mule配置文件當(dāng)中配置的。(2)error manager擁有多個(gè)outbound endpoints出站端點(diǎn),例子演示了消息如何發(fā)布到不同端點(diǎn)。 (3)消息是java對(duì)象形式,并且需要在xml形式之間相互轉(zhuǎn)換。例子演示了鏈接多個(gè)轉(zhuǎn)換器。 spring:bean ="errormanager" "org.mule.example.errorhandler.errormanager" spring:property name="handlers" spring:li

18、st spring:ref local="fatalhandler"/ spring:ref local="defaulthandler"/ spring:ref local="businesshandler"/ /spring:list /spring:property /spring:bean model name="errorhandler-test" service name="error manager" inbound inbound-endpoint address=":

19、/./test-data/in" transformer-refs="xmltoexceptionbean exceptionbeantoerrormessage" file:filename-wildcard-filter pattern="*.xml"/ /inbound-endpoint /inbound pooled-component prototype-object "org.mule.example.errorhandler.errormanager" properties spring:entry key=&

20、quot;handlers" spring:list spring:ref local="fatalhandler"/ spring:ref local="defaulthandler"/ spring:ref local="businesshandler"/ /spring:list /spring:entry /properties /prototype-object /pooled-component outbound filtering-router file:outbound-endpoint path="

21、;test-data/exceptions" outputpattern="exception-uuid.xml" transformer-refs="errormessagetoexceptionbean exceptionbeantoxml"/ !- check errormessage.getthrowable() exception type - ession-filter uator="groovy" expression="payload.throwable instaeof org.mule.api.

22、defaultmuleexception"/ /filtering-router filtering-router smtp:outbound-endpoint user="$smtp.username" password="$smtp.password" host="$smtp.host" port="$smtp.port" to="$email.toaddress" from="$email.fromaddress" subject="$email.subject" transformer-refs="errormessagetoexceptionbean exceptionbeantoxml stri

溫馨提示

  • 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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論