Mule 官方例子研究.docx
- 文档编号:24524857
- 上传时间:2023-05-28
- 格式:DOCX
- 页数:18
- 大小:233.32KB
Mule 官方例子研究.docx
《Mule 官方例子研究.docx》由会员分享,可在线阅读,更多相关《Mule 官方例子研究.docx(18页珍藏版)》请在冰豆网上搜索。
Mule官方例子研究
一、编译导入Mule自带的例子
1.准备
安装Mule。
这里就不介绍mule的安装了,请参考《Mule安装部署手册》。
2.编译Mule自带例子中的Hello例子
使用命令行到目录:
D:
\app\mule3.1.1\examples\hello下,输入:
mvn即可。
这里需要安装Maven;
3.导入Eclipse工程
输入命令:
mvneclipse:
eclipse成功后,即可导入eclipse。
4.导入这个工程到eclipse
(1)选择:
File>Import
(2)选择:
展开“General”选择“ExistingProjectsintoWorkspace”
(3)选择Browse,导入后,选择Finish。
完成。
5.配置Elipse工程(buildpath)
(1)右击工程,选择“BuildPath->ConfigureBuild”:
(2)选择“Libraries->AddLibrary”
(3)点击“UserLibrary”,点击“Next”
(4)点击“UserLibraries”,点击“New”
(5)输入:
MULE_LIB,点击“OK”
(6)点击“AddJARs”,选择Mule主目录下的\lib\mule,选择所有的jar包,点击“Open”
(7)点击“OK”,点击“Finish”
(8)点击“AddVariable”,点击“ConfigureVariables”,点击“New”
(9)输入:
M2_REPO,选择一个目录。
默认地,Maven会在刚才使用mvn命令编译时,
把下载的jar包放到:
C:
\DocumentsandSettings\Administrator\.m2\repository目录下,Administrator是我的用户名,这里我设置的目录是C:
\.m2\repository,你可以把那个目录下的所有copy到这个目录下。
点击“Folder”,选择C:
\.m2\repository。
(10)点击“OK”,点击“yes”,点击“OK”。
设置完成。
6.运行这个工程
(1)右击工程,选择“Run->RunConfigurations”
(2)双击“JavaApplication”,把名字改为:
Hello,选择mainclass为:
org.mule.MuleServer。
如图:
(3)在Arguments选项表中,在ProgramArguments框中输入-configconf\hello-config.xml
(4)点击“Apply”,“Run”。
运行例子,如图:
备注:
运行“RunasMuleServer”报错“AMuleruntimedistributionmustbeconfigured”的解决办法:
在eclipse的classpath界面里面添加libray;右键工程---->properties----->JavaBuildPath----->Libraries------>AddLibrary------>MuleClasspath
二、ECHO例子分析
2.1概述
这个演示了“如何通过使用一个简单的webserviceflow,让我们了解MuleESB组件;在这个例子中,这个组件被了解是通过使用CXF的JAX-WSwebService.
(上图描述了MULE2.X的内容。
SystemStreamConnector和AxisSoapConnector已经被普通的httpConnector替换,服务通过使用CXF被从新实现,用来处理Soap的请求和响应);
上图说明:
1、 通过两种方式接入(红色线):
一个是System.in,一个是Soap(http)方式
2、 每种接入都可以通过接入器(Connector)经过NMR(NormalizedMessageRouter)规范化的消息路由转发后,进行输出,目前通过两种方式:
System.out和Soap(http)方式。
2.2运行应用
简单的拷贝预构建的档案资料(mule-example-echo.zip)到应用文件夹($MULE_HOME/apps),并启动mule。
去通过浏览器访问webservice调用:
http:
//localhost:
65082/services/EchoUMO/echo/text/hello
通过在控制台按“CTR-C”停止mule;
2.3编译例子
依靠你正在使用的编译工具(AntorMaven),你能够通过简单的运行”ant”或”mvn”去编译样例,这将编译样例的类文件,产生一个应用的zip文件,拷贝这个zip文件到 $MULE_HOME/apps.
2.4TheEcho组件
EchoService是基于一个POJO组件,该组件是使用JAX-WS注解方式被注解,并作为一个webservice被暴露出来,该WebService是在MULE使用基于流的配置之上的。
组建的初始化如下:
publicclassEcho
{
publicStringecho(Stringstring)
{
returnstring;
}
}
通过增加JAX-WS注解的方法,我们能把该类方法发布成一个webservice,并具体说明输入参数和响应是怎样被映射的。
@WebService
publicclassEcho
{
@WebResult(name="text")
publicStringecho(@WebParam(name="text")Stringstring)
{
returnstring;
}
}
2.5配置流程(ConfiguringtheFlow)
配置Service,先添加
类的属性必须是完全的合格的类路径名,名称属性对服务来说必须是唯一的名称。
2.6调用流程(InvokingtheFlow)
当前流程是有效的,但是没有入口点,通过URL执行它,并不能得到反馈信息。
首先必须为service配置一个端点endpoint,以使它能被调用。
当运行实例时,通过http发送一个request去调用EchoFlow,一个相应通过Httpchannel被返回。
MuleHttpTransport管理这个交互。
去配置这个流程,我们已经创建一个接入点
//localhost: 65082/services/EchoUMO"exchange-pattern="request-response"/> 如果现在去触发流程,将会得到一个响应,它将返回一个URLPATH给你。 然而EchoFlow仍不知道怎么去处理WebService的调用,首先你需要去采用一个使用CXF的过滤器。 2.7暴露CXF类型WebService(ExposingasaWebServicewithCXF) CXF已经内置了对GETrequests约定的支持,使用的是下面的句法: http: //host/service/OPERATION/PARAM_NAME/PARAM_VALUE 所以,可以通过输入下面的URL来运行该样例: http: //localhost: 65082/services/EchoUMO/echo/text/hello 为了使CXF能够去处理消息,像下面去更新EchoFlow //localhost: 65082/services/EchoUMO"exchange-pattern="request-response"/> jaxws-serviceserviceClass="org.mule.example.echo.Echo"/> 现在如果去触发URL,将会得到适当的响应消息。 也可以去请求WSDL,它是组件运行需要的全部的配置信息。 去看整体内的配置文件,打开目录”examples/echo/src/main/app/directoryunderyourMuleinstallationdirectory”下的mule-config.xml文件. 2.8添加Stdio端点(AddingaSTDIOendpoint) 在MULE之前的版本中,echo实例支持在命令行输入信息时的提示,当你输入一些信息时,你正通过System.in提供输入数据调用服务,在那时你输入的数据经由Systme.out被不停的回应回来。 MULESTDIOTransport管理这个交互。 去配置STDIO支持该流程,你需要在你的配置文件中增加STDIO的命名空间,然后使用”one-way”交换模式详细制定inbound和outbound端点。 inbound-endpointsystem="IN"exchange-pattern="one-way"/> outbound-endpointsystem="OUT"exchange-pattern="one-way"/> 在这个例子中,所有的消息被经由System.out发送。 最后,如果你想去覆默认被传输具体指定在inboundendpoint上配置,你可以去配置一个连接器。 在这个例子中,让我们覆盖stdio传输器默认的链接器,于是提醒用户输入下面的内容: connectorname="SystemStreamConnector" promptMessage="Pleaseentersomething: " messageDelayTime="1000"/> 2.9增加多个接入点 有几个方法对流程增加多个接入点,如果他们是跟随统一个处理器链,你可以使用 inbound-endpointsystem="IN"exchange-pattern="one-way"/> inbound-endpointpath="echo"exchange-pattern="request-response"/> 然而,如果你有明确的端点消息处理器去应用,像CXF,一个选择是去使用复合流程,在复合流程中,你引用的一个流程是来自另外的一个流程中。 这个方法,你可以中止流程通过端点。 看下面的例子: inbound-endpointsystem="IN"exchange-pattern="one-way"/> outbound-endpointsystem="OUT"exchange-pattern="one-way"/> //localhost: 65082/services/EchoUMO"exchange-pattern="request-response"/> jaxws-serviceserviceClass="org.mule.example.echo.Echo"/> EchoStdio和EchoWebService提供两种不同的接入点。 他们都死通应用执行的EchoComponent。 2.10使用一个服务来配置(ConfiguringusingaService) 作为选择,流程能够使用一个服务来配置,去配置这个服务,你增加一个 通过使用 然后和之前的一样增加http端点和消息处理器; //localhost: 65082/services/EchoUMO" exchange-pattern="request-response"> jaxws-service/> 在服务配置中,对CXF来说ServiceClass是不需要的。 这是因为在这个配置中,CXF是能够自动发现组件的。 基于流的配置目前还不支持,所以serviceClass必须被明确的制定。 三、HelloWorld例子分析 3.1概述 该部分主要描述HelloWorld例子的配置和行为。 当我们在浏览器中输入预定义的地址(http: //localhost: 8888/? name=Ross)时Mule解释输入值中“? name=”后的部分,进行验证,使greeeter.java类去添加一些文本到字符串中,然后传递到另外一个flow,第二个flow继续添加文本,然后通过浏览器传回来;以上做的这些知识简单的方式,但是这个例子使用了flows和http传输去说明消息路由和转换器在Mule中的引用。 3.2运行应用 如果正在使用MULEIDE环境,可以创建一个基于HelloWorld例子的工程,然后通过Eclipse来运行; 如果没有使用MULEIDE环境,简单的拷贝预构建的档案资料(mule-example-hello-3.0.0.zip)到应用文件夹($MULE_HOME/apps),并启动mule。 去通过浏览器访问webservice调用: http: //localhost: 8888/? name=Ross 通过在控制台按“CTR-C”停止mule; 3.3编译例子 同上 3.4如何工作的? HelloWorld应用被配置在mule-config.xml中,这个文件存在于mule根目录下的examples/hello/src/main/app.该部分主要是通过配置和JAVA资源文件的调用实现的。 3.5资源文件 消息的文本是从hello-example-messages.properties文件中获得的,该文件存在于 Messagetextistakenfromthehello-example-messages.propertiesfileintheexamples\hello\src\main\resources\messages文件夹,以下是资源文件的内容: 1=,howareyou? 2=Hello 3=Pleaseenteryourname: 4=Pleaseprovideavalidnamewithatleastonecharacter! 在同一个文件夹中,该属性文件有翻译的版本可以替换,例如你可以德语的字符串替换英语的字符串。 3.6类 Mule配置文件唤起两个JAVA类去处理消息,首先是Greeter类,这个类用一个方法从LocalMessage类去推送字符串“hello”,字符串内容来自属性文件。 Greeter类的方法greet()然后去追加人名。 publicclassGreeter { privateStringgreeting=""; publicGreeter() { greeting=LocaleMessage.getGreetingPart1(); } publicObjectgreet(NameStringperson) { Objectpayload=person; if(person.isValid()) { person.setGreeting(greeting); } else { payload=newException(LocaleMessage.getInvalidUserNameError()); } returnpayload; } } 第二个类是ChitChatter,这个类实现附加字符串”,howareyou? ”. publicclassChitChatter { privateStringchitchat=""; publicChitChatter() { chitchat=LocaleMessage.getGreetingPart2(); } publicvoidchat(ChatStringstring) { string.append(chitchat); } } 3.7把类连接起来 在HelloWorld中,调用这些类的配置文件,在composite元素中组成了3个接入点,去接受HTTP、Servlet、和VM请求; HolloWorldflow使用这个composite元素去获得在浏览器中输入的名字,调用greeter类,路由意外的错误去分离被调用的systemErorHandler中的handler. --IncomingHTTPrequests--> //localhost: 8888"transformer-refs="HttpRequestToNameString"exchange-pattern="request-response"> --IncomingServletrequests--> //name"t
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Mule 官方例子研究 官方 例子 研究