收藏 分销(赏)

MULE学习重点笔记专业资料.doc

上传人:快乐****生活 文档编号:3033243 上传时间:2024-06-13 格式:DOC 页数:21 大小:594.04KB 下载积分:10 金币
下载 相关 举报
MULE学习重点笔记专业资料.doc_第1页
第1页 / 共21页
MULE学习重点笔记专业资料.doc_第2页
第2页 / 共21页


点击查看更多>>
资源描述
Mule学习笔记 作者:郑先全 msn: 1. 原理 请参照《Using JBI for Service-Oriented Integration (SOI)》 2. Mule简介 2.1. 架构 2.2. 核心概念 请参照《Architecture Guid》 2.3. repository 如果想保持新鲜,访问她们CVS是最佳办法。 cvs -d :pserver::/scm/mule login (no password) cvs -d :pserver::/scm/mule co mule 注意:从4月14日开始,不再使用cvs,而采用svn,途径如下: 2.4. IDE 有自己IDE: Download: Eclipse update site: 3. Mule使用 3.1. Mule安装 我JDK为1.4.2_05。 下载后,解压缩,并设立MULE_HOME为解压缩目录 测试: 提供echo例子程序是个比较好测试工具,放在%MULE_HOME%\samples\echo下,cmd并切换到改目录bin下,执行mule-echo.bat,即可看到如下窗口: 恭喜,阐明安装成功。 Tip: 事实上,在我环境中会提示一种关于缺少一种sax文献错误,郁闷,通过到sax王张并下载sax2r3.zip后,把里面xml-apis.jar解压缩到%MULE_HOME%\lib下,可以解决该问题。 3.2. echo例子分析 参照这个地址(+Example)简介,应当会有一种比较好开始。 3.2.1. 过程图示 描述为: 1、 通过两种方式接入(红色标记):一为System.in,另一为Soap(http)方式; 2、 每种接入都可以通过接入器(Connector)通过NMR路由转发后,进行输出,当前通过两种方式输出:一为System.out,另一为Soap(http)方式 可以通过Mule提供工具生成配备图,如下: 3.2.2. 有关代码(The Echo Service) The echo Service is a POJO that implements an EchoService interface - public interface EchoService { public String echo(String echo); } The implementation (i.e the POJO to be managed by Mule) looks like - package ponents.simple; public class EchoComponent extends LogComponent implements EchoService { public String echo(String echo) { return echo; } } 3.2.3. 配备和阐明 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mule-configuration PUBLIC "-//SymphonySoft //DTD mule-configuration XML V1.0//EN" " <!--整体配备--> <mule-configuration id="Mule_Echo_Sample" version="1.0"> <!--配备描述--> <description>描述</description> <!--连接器配备--> <connector name="SystemStreamConnector" className="org.mule.providers.stream.SystemStreamConnector"> <properties> <property name="promptMessage" value="Please enter something:"/> <property name="messageDelayTime" value="1000"/> </properties> </connector> <!--模型配备--> <model name="echoSample"> <mule-descriptor name="EchoUMO" implementation="ponents.simple.EchoComponent"> <!—接入点设立,当前为stream和axis两种类型--> <inbound-router> <endpoint address="stream://System.in"/> <endpoint address="axis:http://localhost:8081/services"/> </inbound-router> <!—输出点设立,当前为stream类型--> <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRouter"> <endpoint address="stream://System.out"/> </router> </outbound-router> </mule-descriptor> </model> </mule-configuration> 3.3. Webapp例子分析 这个例子其实是对原有几种例子在webapp集成,通过使用MuleClient进行基于编码调用。 Tips: 1、 可以通过干预web.xml,逐个加载需要揣摩例子,便于分析; 2、 开始时,使用默认加载方式。 3.3.1. echo例子 略 3.3.2. Hello例子 3.3.2.1. 简介 本例子重要用于演示两个transformer、两个UMO之间信息转换和事件交互。 Transformer: StringToNameString Transformer: NameStringToChatString GreeterUMO ChitChatUMO 3.3.2.2. 代码分析 几种java文献,阐明如下: POJO/javabean: NameString.java ChatString.java SERVICE: Greeter.java ChitChatter.java Transformer: HttpRequestToString.java NameStringToChatString.java StringToNameString.java ChatStringToString.java 3.3.2.3. 配备 Web.xml <param-value>/WEB-INF/mule-config.xml, /WEB-INF/mule-echo-config.xml, /WEB-INF/mule-hello-config.xml </param-value> Mule-hello-config.xml <!--转换器à <transformers> <transformer name="StringToNameString" className="org.mule.samples.hello.StringToNameString" returnClass="org.mule.samples.hello.NameString"/> <transformer name="NameStringToChatString" className="org.mule.samples.hello.NameStringToChatString" returnClass="org.mule.samples.hello.ChatString"/> </transformers> <!-- A Mule descriptor defines all the necessary information about how your components will interact with the framework,other components in the system and external sources. Please refer to the Configuration Guide for a full description of all the parameters. --> <mule-descriptor name="GreeterUMO" implementation="org.mule.samples.hello.Greeter"> <inbound-router> <endpoint address="vm://greeter" transformers="StringToNameString"/> <endpoint address="servlet://greeter" transformers="StringToNameString"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.OutboundPassThroughRouter"> <endpoint address="vm://chitchatter"/> </router> </outbound-router> </mule-descriptor> <mule-descriptor name="ChitChatUMO" implementation="org.mule.samples.hello.ChitChatter"> <inbound-router> <endpoint address="vm://chitchatter" transformers="NameStringToChatString"/> </inbound-router> </mule-descriptor> Tips: 1、 endpoint address并没有实际意义,但由于在整个Mule实例里面必要唯一,故可以理解为命名空间 2、 Transformer必要继承AbstractTransformer,重要实现doTransform接口办法 3.3.3. loanbroker 3.3.3.1. 简介 异步实现: 同步实现: 3.3.3.2. 配备图 请参照:+Broker+Example 3.3.3.3. 类图 3.3.3.4. 配备文献详细分析 <mule-configuration id="Loan_broker_Sync" version="1.0"> <!—定义EndPointà <endpoint-identifiers> <endpoint-identifier name="LoanBrokerRequests" value="vm://LoanBrokerRequests"/> <endpoint-identifier name="LoanBrokerQuotes" value="vm://LoanQuotes"/> <endpoint-identifier name="CreditAgency" value="axis:http://localhost:18080/mule/CreditAgencyService?method=getCreditProfile"/> <endpoint-identifier name="CreditAgencyReceiver" value="axis:http://localhost:18080/mule"/> <endpoint-identifier name="LenderService" value="vm://localhost/LenderService?method=setLenderList"/> <!-- The method parameter for the bank endpoints is added programmitcally when the bank objects are created --> <endpoint-identifier name="Bank1" value="axis:http://localhost:10080/mule"/> <endpoint-identifier name="Bank2" value="axis:http://localhost:0/mule"/> <endpoint-identifier name="Bank3" value="axis:http://localhost:30080/mule"/> <endpoint-identifier name="Bank4" value="axis:http://localhost:40080/mule"/> <endpoint-identifier name="Bank5" value="axis:http://localhost:50080/mule"/> </endpoint-identifiers> <!-- LoanBroker Descriptorà <mule-descriptor name="LoanBroker" implementation="org.mule.samples.loanbroker.SyncLoanBroker">//阐明这个类来发出祈求而已,并不需要实现特殊接口 <inbound-router> <endpoint address="LoanBrokerRequests"/> </inbound-router> <outbound-router>// LoanBroker Descriptor有两个outbound,一种去访问信用代理,一种去获取贷款方列表 <router className="org.mule.routing.outbound.FilteringOutboundRouter"> <endpoint address="CreditAgency"/> <filter expectedType="org.mule.samples.loanbroker.Customer" className="org.mule.routing.filters.PayloadTypeFilter"/> //信用代理,注意使用了filter,是为了保证CreditAgencyEndPoint相应CreditAgencyService具备适当参数 </router> <router className="org.mule.routing.outbound.FilteringOutboundRouter"> <endpoint address="LenderService"/> <filter expectedType="org.mule.samples.loanbroker.BankQuoteRequest" className="org.mule.routing.filters.PayloadTypeFilter"/> //贷款方代理,通过filter,使得只有类型为BankQuoteRequest祈求去访问 </router> </outbound-router> <response-router timeout="100000">//响应路由,通过聚合进行 <endpoint address="LoanBrokerQuotes"/> <router className="org.mule.samples.loanbroker.routers.BankQuotesResponseAggregator"/> </response-router> </mule-descriptor> <mule-descriptor name="CreditAgencyService"//默认获取顾客信用信息服务 inboundEndpoint="CreditAgencyReceiver" implementation="org.mule.samples.loanbroker.DefaultCreditAgencyService"> </mule-descriptor> <mule-descriptor name="LenderService"//借贷方服务 inboundEndpoint="LenderService" implementation="org.mule.samples.loanbroker.DefaultLenderService"> <outbound-router> <router className="org.mule.routing.outbound.StaticRecipientList"> <reply-to address="LoanBrokerQuotes"/>//reply-to描述了反馈端点 <filter expression="recipients!=null" className="org.mule.routing.filters.MessagePropertyFilter"/> //这个过滤器用处在于阐明只有recipients!=null状况下,才执行必要逻辑 </router> </outbound-router> </mule-descriptor> <!—下面为几种银行inbound配备,重要描述几种不同银行输入à <mule-descriptor name="Bank1" inboundEndpoint="Bank1" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank2" inboundEndpoint="Bank2" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank3" inboundEndpoint="Bank3" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank4" inboundEndpoint="Bank4" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank5" inboundEndpoint="Bank5" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> </mule-configuration> 3.3.3.5. 通过ActiveMQ进行 上述例子是通过Axis1.3构造webservice进行,很容易通过ActiveMQ来做,重要调节只要重新定义Enpoint即可。 详细配备文献修改一下即可,如下: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mule-configuration PUBLIC "-//SymphonySoft //DTD mule-configuration XML V1.0//EN" " <mule-configuration id="Loan_broker_ASync" version="1.0"> <mule-environment-properties synchronous="false" serverUrl="" remoteSync="false"/> <!--Testing with ActiveMq--> <!-- <connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector"> <properties> <property name="connectionFactoryJndiName" value="ConnectionFactory"/> <property name="jndiInitialFactory" value="org.activemq.jndi.ActiveMQInitialContextFactory"/> <property name="specification" value="1.1"/> <map name="connectionFactoryProperties"> <property name="brokerURL" value="tcp://localhost:61616"/> </map> </properties> </connector>--> <connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector"> <properties> <property name="specification" value="1.1"/> <property name="connectionFactoryJndiName" value="ConnectionFactory"/> <property name="jndiInitialFactory" value="org.activemq.jndi.ActiveMQInitialContextFactory"/> <map name="connectionFactoryProperties"> <property name="brokerURL" value="vm://localhost"/> <property name="brokerXmlConfig" value="classpath:/activemq-config.xml"/> </map> </properties> </connector> <!-- testing with OpenJms --> <!--<connector name="jmsConnector" className="org.mule.providers.jms.JmsConnector">--> <!--<properties>--> <!--<property name="connectionFactoryJndiName" value="JmsQueueConnectionFactory"/>--> <!--<property name="jndiInitialFactory" value="org.exolab.jms.jndi.InitialContextFactory"/>--> <!--<property name="jndiProviderUrl" value="tcp://localhost:3035"/>--> <!--</properties>--> <!--</connector>--> <endpoint-identifiers> <endpoint-identifier name="LoanBrokerRequests" value="vm://LoanBrokerRequests"/> <endpoint-identifier name="LoanBrokerQuotes" value="jms://LoanQuotes"/> <endpoint-identifier name="CreditAgency" value="jms://CreditAgencyService"/> <endpoint-identifier name="CreditAgencyReceiver" value="jms://CreditAgencyReceiver"/> <endpoint-identifier name="LenderService" value="jms://LenderService"/> <endpoint-identifier name="Bank1" value="jms://Bank1"/> <endpoint-identifier name="Bank2" value="jms://Bank2"/> <endpoint-identifier name="Bank3" value="jms://Bank3"/> <endpoint-identifier name="Bank4" value="jms://Bank4"/> <endpoint-identifier name="Bank5" value="jms://Bank5"/> </endpoint-identifiers> <mule-descriptor name="LoanBroker" implementation="org.mule.samples.loanbroker.AsyncLoanBroker"> <inbound-router> <endpoint address="LoanBrokerRequests"/> </inbound-router> <outbound-router> <router className="org.mule.routing.outbound.FilteringOutboundRouter"> <endpoint address="CreditAgency"/> <filter expectedType="org.mule.samples.loanbroker.Customer" className="org.mule.routing.filters.PayloadTypeFilter"/> </router> <router className="org.mule.routing.outbound.FilteringOutboundRouter"> <endpoint address="LenderService"/> <filter expectedType="org.mule.samples.loanbroker.BankQuoteRequest" className="org.mule.routing.filters.PayloadTypeFilter"/> </router> </outbound-router> <response-router timeout="100000"> <endpoint address="LoanBrokerQuotes"/> <router className="org.mule.samples.loanbroker.routers.BankQuotesResponseAggregator"/> </response-router> </mule-descriptor> <mule-descriptor name="CreditAgencyService" inboundEndpoint="CreditAgencyReceiver" implementation="org.mule.samples.loanbroker.DefaultCreditAgencyService"> </mule-descriptor> <mule-descriptor name="LenderService" inboundEndpoint="LenderService" implementation="org.mule.samples.loanbroker.DefaultLenderService"> <outbound-router> <router className="org.mule.routing.outbound.StaticRecipientList"> <reply-to address="LoanBrokerQuotes"/> <filter expression="recipients!=null" className="org.mule.routing.filters.MessagePropertyFilter"/> </router> </outbound-router> </mule-descriptor> <mule-descriptor name="Bank1" inboundEndpoint="Bank1" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank2" inboundEndpoint="Bank2" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank3" inboundEndpoint="Bank3" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank4" inboundEndpoint="Bank4" implementation="org.mule.samples.loanbroker.Bank"> </mule-descriptor> <mule-descriptor name="Bank5" inboundEndpoint="Bank5" implementation="org.mule.samples.l
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服