下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、mule示例分析一、hello world (主要演示了两个service component链式合作处理一条消息和消息格式转换1、示例翻译: 展示了如何配置多个service components它们与一个哀求交互(就是说二者合作以链式方式先后处理一个哀求消息,处理的方式是添加消息的内容),以及如何管理大事转换(所谓大事就是消息,这里的大事转换是指消息格式的转换,比如从stdio标准输入中输入的字符串转换为一个java bean对象以及不同java bean之间的转换)。这个例子还用法了属性文件来配置i18n国际化的消息文字。还有演示了出站过滤路由。用法了两个类也就是两个service co
2、mponent组件来先后处理消息,第一个是greeter 类,它的greet()办法 用法localmessage 来从上面提到的属性文件猎取greeting问候语,然后把问候语"hello"加到你在控制台输入的名字之前(这样它就第一次修改了消息的内容)。其次个是chitchatter类,它的chat办法 把", how are you?"加到消息内容之后(这样它又一次修改了消息内容): 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转换器将字符串格式的消息转换为namestring类型的java bean - 消息交给greeter组件处理:把"hello"加到了消息内容之前 - 处理之后的消息被发往chitchatter队列 - chitchatumo服务组件)stdintonamestring转换器在之前就定义好了: custom-transformer name="stdintonamestring" "org.mule.example.hello.stdintonamestring"
5、/ 注重: mule是依赖反射获知greeter内部各个办法需要的传参类型,然后再按照目前消息格式调用正确的消息处理办法。greeter处理完消息后、mule把消息分发到了端点:vm:/chitchatter:名为chitchatter的in-memory queue内存队列。chitchatumo服务组件正在监听这个队列(也就是说chitchatter队列是 greeterumo的输出、chitchatumo的输入,这样来使得两个服务组件先后处理一条消息) 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服务组件又配置了两个转换器:namestringtochatstring、chatstringtostring。chitchatter组件类的输入参数为 chatstring 类型,所以namestringtochatstring转换器将消息格式从namestring转为 chatstring、然后再调用 chitchatter组件(流程:greeterumo - vm:/chitchatter - namestringtochatstring - chitchatter - chatstringtostring - system.out)注重ja
8、va bean是不含有任何路由规律的, mule配置文件将它们组织到一起,任何已有的pojo、web services都可以照此办理并在它们之间传输消息。二、stock quote (演示了如何调用aspx web service、用法xslt转换、反序列化stockquote java bean以及用法rest和soap调用服务。例子需要拜访互联网上的公共.net服务、主要是咱也不知道人家都有哪些股票代码有数据。源码就不看了) 1、示例翻译:通过system.in接收股票代码、调用stockquote服务、通过xslt转换器将返回结果转换格式、通过xmltoobject转换器再将结果转换为s
9、tockquote类型、随后将股票报价打印到system.out (例子用到了类似spring的属性占位符特性来从配置文件取得一些信息、配置多个转换器并“串联”起来、其中还用到xslt转换器) 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 配置当中还用到所谓的rest service component , 它用法了rest服务包装器代理了一个rest服务、这样使得该service服务看上去似乎是本地的component组件普通(和cxf的web服务包装器差不多),re
11、st服务包装器有一些配置属性:serviceurl就是 拜访rest服务的url、payloadparametername是传参名 ,本例中惟独一个参数"symbol"股票代码、httpmethod是办法名 get或post。 我任凭传了个代码过去返回了很多据的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版原理类似,只是服务配置是不同的。web service版显式配置了outbound pass-through路由,它将输入从一个en
13、dpoint挺直传输到outbound axis endpoint,不作任何转变或处理。另外outbound endpoint向stock quote service股票报价服务哀求时是带参数的。 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以及向多个出站endpoint发布消息,用法了文件监控inbound+邮件outbound)示例包含两个services: exceptionmanager 异样管理器 和 businesserrormanager业务错误管理器。businesserrormanager是个容易的service,它通过jms接收业务异样消息并将消息记录到控制台,以此仿照真切的异样处理应用。 exceptionmanager接收异样消息并按照异样消息的类型举行某些处理动作。例如假如收到致命异样则会向系统管理员发送邮件;收到标准系统异样则写入本地文件log,例子演示的不是异样处理、演示的是:(1)全部的ser
17、vice components都是以spring bean的形式在一个mule配置文件当中配置的。(2)error manager拥有多个outbound endpoints出站端点,例子演示了消息如何发布到不同端点。 (3)消息是java对象形式,并且需要在xml形式之间相互转换。例子演示了链接多个转换器。 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. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- LY/T 1576-2025花卉名称规范
- 母婴护理:产后减肥与塑形方法
- 早产儿Nec护理:团队协作与沟通技巧
- 护理情景对话:提升患者满意度
- 实习合同劳动协议
- 卫健局医生考试题目及答案
- 2026年高胱氨酸尿肾病诊疗试题及答案(肾内科版)
- 广东惠州市第五中学附属学校2025-2026学年八年级第二学期道德与法治试卷期中考试试卷(含答案)
- 通化市教师招聘考试题库及答案
- 太原市护士招聘考试题及答案
- 语文参考答案四川成都市2023级(2026)届高三年级下学期定时练习(成都三诊)(4.27-4.29)
- 重庆机场集团有限公司招聘考试试题及答案
- 2026上海中考语文知识点背诵清单练习含答案
- 腹股沟疝术后感染的风险与应对
- 2026广东佛山市南海区大沥镇镇属企业员工招聘9人建设笔试模拟试题及答案解析
- 2026综合版《安全员手册》
- 【《基于STM32F103的智能药盒设计》7600字(论文)】
- 2026年四川省成都市-中考英语模拟卷(含解析无听力部分)
- 教资面试协议书
- 成人术后疼痛管理临床实践指南(2025版)
- 矿山运输安全协议书
评论
0/150
提交评论