- 浏览: 296399 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (133)
- boss好文 (10)
- 数据模型 (2)
- together (1)
- oracle (10)
- 健康生活 (4)
- js好东东 (8)
- 工作流 (1)
- 常见java问题 (7)
- BOSS开发随想 (0)
- rose相关 (1)
- 股市看图 (4)
- java基础 (12)
- jbpm (1)
- 集群(负载均衡) (4)
- spring教程 (2)
- maven入门 (5)
- 项目管理 (14)
- 常用软件 (3)
- mysql (4)
- j2ee性能调优 (2)
- jfreechart相关 (1)
- 需求工具 (2)
- maven基础讲解 (3)
- AXURE下载 (2)
- db2 (2)
- svn (1)
- 日常操作技巧 (3)
- SOA (16)
- jetty (2)
- jetspeed (0)
- camel (0)
- 安卓开发 (4)
- ESB (4)
- 物流 (2)
- 软件需求的3个层次 (1)
- WMS (1)
- eclipse (1)
- 安卓源代码 (2)
- jar (0)
最新评论
-
seeYourEye:
prt1979 写道怎么在点“open project”后,选 ...
PL/SQL Developer插件之SVN -
prt1979:
怎么在点“open project”后,选择文件夹后一直弹出“ ...
PL/SQL Developer插件之SVN -
houlianxue:
LateCHI 写道东西不错。可以正常打开目录。但是进行svn ...
PL/SQL Developer插件之SVN -
LateCHI:
东西不错。可以正常打开目录。但是进行svn操作的时候提示 un ...
PL/SQL Developer插件之SVN -
w.tany:
很多地方少个# 号
<s:property>的用法
1 Mule-config.xml
示例模型:
<mule>
<model>
<service name="GreeterUMO">
<inbound....>
<filtering-router>
....
</filtering-router>
</inbound>
<component.... />
<outbound....>
.......
</outbound>
<default-service-exception-strategy>
.....
</default-service-exception-strategy>
</service>
<service name="GreeterUMO2" initialState="stopped">
...
</service>
</model>
</mule>
1.1 基本标签
Mule配置文件由以下标签组织成一颗XML元素树:
1.1.1 <model>
定义应用程序中的服务;
1.1.2 <service>
配置一个服务;
1.1.3 <description>
服务的描述内容;
1.1.4 <inbound>
配置入站路由,它们的端点以及入站转换器;
1.1.5 <outbound>
配置一个或多个出站路由,它们的端点以及出站转换器;
1.1.6 <async-reply>
配置一个异步应答路由,它用于异步请求/响应消息中;
1.1.7 <exception-strategy>
配置连接器或模型或服务上的错误处理策略;
1.2 配置设置
将服务组件编织成一个应用程序是由配置文件来完成的,Mule的配置设置是由开发人员负责的,它们包括:
1、服务组件的声明;
2、哪个服务上的端点将接收消息;
3、将消息引入到服务组件之前使用哪个转换器;
4、出站端点上的消息下一步改流向哪里;
5、消息的路由信息将其发送到下一个服务组件。
1.3 声明服务组件
1.3.1 <component>
Mule组件是通过指定实施类名配置的,Mule为组件接收的每个消息创建新的类实例,注意是一个特定的Java类而不是函数:
<component class="org.my.ServiceComponentImpl" />
1.3.2 <pooled-component>
Mule创建一批组件,共用组件配置,对象工厂创建一个单一的对象实例也可以指定:
<pooled-component class="org.my.ServiceComponentImpl" />
<component>
<singleton-object class="org.my.ServiceComponentImpl" />
</component>
1.3.3 <entry-point-resolver-set/>
Mule可以创建一个入口点分解器基于消息负载情况动态选择调用的函数:
<component class="org.my.PrototypeObjectWithMyLifecycle">
<entry-point-resolver-set>
<array-entry-point-resolver />
<callable-entry-point-resolver />
</entry-point-resolver-set>
</component>
1.3.4 <callable-entry-point-resolver>
这个入口点分解器用于组件实现org.mule.api.lifecycle.Callable接口,组件可以实现Callable接口废除一切动态解决方案,并调用接口函数进行替代;
1.3.5 <custom-entry-point-resolver-set>
这个自定义入口点分解器可以和实现了org.mule.api.model.EntryPointResolverSet接口的类一起实施,为了准确地在你的端点上指定函数,你可以在端点上使用函数参数,如:
<ejb:endpoint host="localhost" port="1099" object="SomeService"
method="remoteMethod" />
1.3.6 <log-component/>
Mule提供了多个简单有用的组件用于测试和初始化原型,如<log-component/>,它将所有接收到的消息输出到控制台中;
1.4 配置端点
1.4.1 <endpoint>
使用它声明一个全局范围的端点,在整个Mule应用程序中都可以使用,在一个服务中,"ref="用于引用全局端点:
<file:endpoint name="fileReader" reverseOrder="true"
comparator="org.mule.transport.file.comparator.OlderFirstComparator" />
<model>
<service name="Priority1">
<file:inbound-endpoint ref="fileReader" path="/var/prio1" />
......
</service>
<service name="Priority2">
<file:inbound-endpoint ref="fileReader" path="/var/prio2" />
......
</service>
</model>
1.4.2 <inbound-endpoint>
这是服务组件接收事件的通道,它包括使用的传输器,地址,路径或资源(任何有效的URI):
<inbound-endpoint address="udp://localhost:65432" />
<inbound-endpoint address="jms://test.queue" />
1.4.3 <outbound-endpoint>
这个是组件返回的数据被发送出去的通道;
<outbound-endpoint address="smtp://user:secret@smtp.host" />
<outbound-endpoint address="smtp://user:secret@smtp.host" />
1.5 配置入站路由
1.5.1 <selective-consumer-router>
这个路由在入站消息上应用一个或多个过滤器,符合要求的消息被转送到组件:
<inbound>
<selective-consumer-router>
<mulexml:jxpath-filter expression="msg/header/resultcode = 'success'" />
</selective-consumer-router>
<forwarding-catch-all-strategy>
<jms:endpoint topic="error.topic" />
</forwarding-catch-all-strategy>
</inbound>
1.5.2 <idempotent-receiver-router>
这个路由通过检查入站消息的唯一性消息ID确保服务接收的消息是唯一性的,ID可以使用idExpression属性中定义的表达式生成:
<inbound>
<secure-hash-idempotent-receiver-router
messageDigestAlgorithm="SHA26">
<simple-text-file-store directory="./idempotent" />
</secure-hash-idempotent-receiver-router>
</inbound>
1.5.3 <secure-hash-idempotent-receiver>
这个路由通过计算消息内容的散列值确保服务接收到的消息的唯一性:
<inbound>
<secure-hash-idempotent-receiver-router
messageDigestAlgorithm="SHA26">
<simple-text-file-store directory="./idempotent" />
</secure-hash-idempotent-receiver-router>
</inbound>
1.6 配置出站路由
1.6.1 <filtering-router>
这个路由使用过滤器确定消息是否匹配特定的标准;
<outbound matchAll="true">
<filtering-router>
<endpoint address="jms://deposit.queue" />
</filtering-router>
<filtering-router>
<jms:outbound-endpoint queue="large.deposit.queue" />
<mulexml:jxpath-filter expression="deposit/amount >= 100000" />
</filtering-router>
</outbound>
1.6.2 <pass-through-router>
这个路由匹配所有的消息,通过一个配置好的端点发送出去;
<outbound>
<pass-through-router>
<smtp:outbound-endpoint to="ross@muleumo.org" />
</pass-through-router>
</outbound>
1.6.3 <static-recipient-list-router>
这个路由用于从单个端点发送相同的消息到多个端点,或实施消息属性或有效负载确定的下一个目的地的路由滑动行为;
<outbound>
<static-recipient-list-router>
<payload-type-filter expectedType="javax.jms.Message" />
<recipients>
<spring:value>jms://orders.queue</spring:value>
<spring:value>jms://tracking.queue</spring:value>
</recipients>
</static-recipient-list-router>
</outbound>
1.7 配置传输器和连接器
以为传输器声明一个描述连接信息的端点URI的值:
<rmi:endpoint name="BadType" host="localhost" port="1099"
object="MatchingUMO" method="reverseString" />
<jms:inbound-endpoint queue="test.queue" />
<ssl:endpoint name="clientEndpoint" host="localhost" port="60198"
synchronous="true" />
<quartz:endpoint name="qEP6" repeatCount="10"
repeatInterval="1000" jobName="job" />
同样,可以使用<connector>元素定义一个连接器配置,Mule使用标准的组件,如Work Manager高效共享线程资源,并为线程使用提供更多控制,对于错误,你也要象事务行为一样声明一个异常策略:
<vm:connector name="VMConnector">
...
<default-connector-exception-strategy>
<vm:outbound-endpoint path="systemErrorHandler" />
</default-connector-exception-strategy>
</vm:connector>
1.8 配置转换器
可以配置一个本地或全局的转换器,本地转换器定义在端点上,而全局转换器是在需要的时候进行引用的,下面的代码定义了两个全局转换器:
<xm:xml-to-object-transformer name="XMLToExceptionBean"
returnClass="org.mule.example.errorhandler.ExceptionBean" />
<custom-transformer name="ExceptionBeanToErrorMessage"
class="org.mule.example.errorhandler.ExceptionBeanToErrorMessage"
returnClass="org.mule.example.errorhandler.ErrorMessage" />
1.8.1 <append-string-transformer>
在现有的字符串上追加了一个字符串:
<append-string-transformer name="myAppender"
message=" ... that's good to know!" />
1.8.2 <xslt-transformer>
通过XSLT处理XML负载:
<mulexml:xslt-transformer name="xslt"
xslFile="./conf/xsl/cd-listing.xsl">
<mulexml:context-property key="title"
value="#[header:ListTitle]" />
<mulexml:context-property key="rating"
value="#[header:ListRating]" />
</mulexml:xslt-transformer>
示例模型:
<mule>
<model>
<service name="GreeterUMO">
<inbound....>
<filtering-router>
....
</filtering-router>
</inbound>
<component.... />
<outbound....>
.......
</outbound>
<default-service-exception-strategy>
.....
</default-service-exception-strategy>
</service>
<service name="GreeterUMO2" initialState="stopped">
...
</service>
</model>
</mule>
1.1 基本标签
Mule配置文件由以下标签组织成一颗XML元素树:
1.1.1 <model>
定义应用程序中的服务;
1.1.2 <service>
配置一个服务;
1.1.3 <description>
服务的描述内容;
1.1.4 <inbound>
配置入站路由,它们的端点以及入站转换器;
1.1.5 <outbound>
配置一个或多个出站路由,它们的端点以及出站转换器;
1.1.6 <async-reply>
配置一个异步应答路由,它用于异步请求/响应消息中;
1.1.7 <exception-strategy>
配置连接器或模型或服务上的错误处理策略;
1.2 配置设置
将服务组件编织成一个应用程序是由配置文件来完成的,Mule的配置设置是由开发人员负责的,它们包括:
1、服务组件的声明;
2、哪个服务上的端点将接收消息;
3、将消息引入到服务组件之前使用哪个转换器;
4、出站端点上的消息下一步改流向哪里;
5、消息的路由信息将其发送到下一个服务组件。
1.3 声明服务组件
1.3.1 <component>
Mule组件是通过指定实施类名配置的,Mule为组件接收的每个消息创建新的类实例,注意是一个特定的Java类而不是函数:
<component class="org.my.ServiceComponentImpl" />
1.3.2 <pooled-component>
Mule创建一批组件,共用组件配置,对象工厂创建一个单一的对象实例也可以指定:
<pooled-component class="org.my.ServiceComponentImpl" />
<component>
<singleton-object class="org.my.ServiceComponentImpl" />
</component>
1.3.3 <entry-point-resolver-set/>
Mule可以创建一个入口点分解器基于消息负载情况动态选择调用的函数:
<component class="org.my.PrototypeObjectWithMyLifecycle">
<entry-point-resolver-set>
<array-entry-point-resolver />
<callable-entry-point-resolver />
</entry-point-resolver-set>
</component>
1.3.4 <callable-entry-point-resolver>
这个入口点分解器用于组件实现org.mule.api.lifecycle.Callable接口,组件可以实现Callable接口废除一切动态解决方案,并调用接口函数进行替代;
1.3.5 <custom-entry-point-resolver-set>
这个自定义入口点分解器可以和实现了org.mule.api.model.EntryPointResolverSet接口的类一起实施,为了准确地在你的端点上指定函数,你可以在端点上使用函数参数,如:
<ejb:endpoint host="localhost" port="1099" object="SomeService"
method="remoteMethod" />
1.3.6 <log-component/>
Mule提供了多个简单有用的组件用于测试和初始化原型,如<log-component/>,它将所有接收到的消息输出到控制台中;
1.4 配置端点
1.4.1 <endpoint>
使用它声明一个全局范围的端点,在整个Mule应用程序中都可以使用,在一个服务中,"ref="用于引用全局端点:
<file:endpoint name="fileReader" reverseOrder="true"
comparator="org.mule.transport.file.comparator.OlderFirstComparator" />
<model>
<service name="Priority1">
<file:inbound-endpoint ref="fileReader" path="/var/prio1" />
......
</service>
<service name="Priority2">
<file:inbound-endpoint ref="fileReader" path="/var/prio2" />
......
</service>
</model>
1.4.2 <inbound-endpoint>
这是服务组件接收事件的通道,它包括使用的传输器,地址,路径或资源(任何有效的URI):
<inbound-endpoint address="udp://localhost:65432" />
<inbound-endpoint address="jms://test.queue" />
1.4.3 <outbound-endpoint>
这个是组件返回的数据被发送出去的通道;
<outbound-endpoint address="smtp://user:secret@smtp.host" />
<outbound-endpoint address="smtp://user:secret@smtp.host" />
1.5 配置入站路由
1.5.1 <selective-consumer-router>
这个路由在入站消息上应用一个或多个过滤器,符合要求的消息被转送到组件:
<inbound>
<selective-consumer-router>
<mulexml:jxpath-filter expression="msg/header/resultcode = 'success'" />
</selective-consumer-router>
<forwarding-catch-all-strategy>
<jms:endpoint topic="error.topic" />
</forwarding-catch-all-strategy>
</inbound>
1.5.2 <idempotent-receiver-router>
这个路由通过检查入站消息的唯一性消息ID确保服务接收的消息是唯一性的,ID可以使用idExpression属性中定义的表达式生成:
<inbound>
<secure-hash-idempotent-receiver-router
messageDigestAlgorithm="SHA26">
<simple-text-file-store directory="./idempotent" />
</secure-hash-idempotent-receiver-router>
</inbound>
1.5.3 <secure-hash-idempotent-receiver>
这个路由通过计算消息内容的散列值确保服务接收到的消息的唯一性:
<inbound>
<secure-hash-idempotent-receiver-router
messageDigestAlgorithm="SHA26">
<simple-text-file-store directory="./idempotent" />
</secure-hash-idempotent-receiver-router>
</inbound>
1.6 配置出站路由
1.6.1 <filtering-router>
这个路由使用过滤器确定消息是否匹配特定的标准;
<outbound matchAll="true">
<filtering-router>
<endpoint address="jms://deposit.queue" />
</filtering-router>
<filtering-router>
<jms:outbound-endpoint queue="large.deposit.queue" />
<mulexml:jxpath-filter expression="deposit/amount >= 100000" />
</filtering-router>
</outbound>
1.6.2 <pass-through-router>
这个路由匹配所有的消息,通过一个配置好的端点发送出去;
<outbound>
<pass-through-router>
<smtp:outbound-endpoint to="ross@muleumo.org" />
</pass-through-router>
</outbound>
1.6.3 <static-recipient-list-router>
这个路由用于从单个端点发送相同的消息到多个端点,或实施消息属性或有效负载确定的下一个目的地的路由滑动行为;
<outbound>
<static-recipient-list-router>
<payload-type-filter expectedType="javax.jms.Message" />
<recipients>
<spring:value>jms://orders.queue</spring:value>
<spring:value>jms://tracking.queue</spring:value>
</recipients>
</static-recipient-list-router>
</outbound>
1.7 配置传输器和连接器
以为传输器声明一个描述连接信息的端点URI的值:
<rmi:endpoint name="BadType" host="localhost" port="1099"
object="MatchingUMO" method="reverseString" />
<jms:inbound-endpoint queue="test.queue" />
<ssl:endpoint name="clientEndpoint" host="localhost" port="60198"
synchronous="true" />
<quartz:endpoint name="qEP6" repeatCount="10"
repeatInterval="1000" jobName="job" />
同样,可以使用<connector>元素定义一个连接器配置,Mule使用标准的组件,如Work Manager高效共享线程资源,并为线程使用提供更多控制,对于错误,你也要象事务行为一样声明一个异常策略:
<vm:connector name="VMConnector">
...
<default-connector-exception-strategy>
<vm:outbound-endpoint path="systemErrorHandler" />
</default-connector-exception-strategy>
</vm:connector>
1.8 配置转换器
可以配置一个本地或全局的转换器,本地转换器定义在端点上,而全局转换器是在需要的时候进行引用的,下面的代码定义了两个全局转换器:
<xm:xml-to-object-transformer name="XMLToExceptionBean"
returnClass="org.mule.example.errorhandler.ExceptionBean" />
<custom-transformer name="ExceptionBeanToErrorMessage"
class="org.mule.example.errorhandler.ExceptionBeanToErrorMessage"
returnClass="org.mule.example.errorhandler.ErrorMessage" />
1.8.1 <append-string-transformer>
在现有的字符串上追加了一个字符串:
<append-string-transformer name="myAppender"
message=" ... that's good to know!" />
1.8.2 <xslt-transformer>
通过XSLT处理XML负载:
<mulexml:xslt-transformer name="xslt"
xslFile="./conf/xsl/cd-listing.xsl">
<mulexml:context-property key="title"
value="#[header:ListTitle]" />
<mulexml:context-property key="rating"
value="#[header:ListRating]" />
</mulexml:xslt-transformer>
发表评论
-
BPEL或ESB:应该使用哪一个?
2012-03-13 17:09 1216在设计 SOA 解决方案时 ... -
ESB 案例解析和项目实施经验分享,第 3 部分: ESB 项目需求分析和方案设计浅谈
2012-02-15 14:50 1782选自:http://www.ibm.com/developer ... -
ESB 案例解析和项目实施经验分享,第 2 部分: 刚柔相济,构建企业联邦 ESB
2012-02-15 14:37 1875摘自:http://www.ibm.com/developer ... -
ESB案例分析:第 1 部分: 借助 ESB 整合航空公司商务体系,提升客户服务水平
2012-02-15 14:14 1946摘自:http://www.ibm.com/developer ... -
ESB架构之企业实施案例
2012-02-14 17:33 1427本文是摘抄自: http://www.webspherechi ... -
关于mule的网站
2011-11-07 10:17 1328关于mule的网站 1,http://note.sdo.com ... -
muleStudio发布到指定目录下
2011-11-04 15:14 1146在mule studio中右键项目名称,选择EXPORT,在弹 ... -
mule配置基础
2011-11-03 10:26 8870Mule是开源的企业集成消息框架,,它的配置需要使用大量的XM ... -
mule & seda 学习四
2011-11-03 09:10 997从前,从前 程序跑的太慢,对mule有点误解 jaxb解析 ... -
mule & seda的学习三
2011-11-03 09:10 1248以竣工服务为例 package com.tydic.mule ... -
mule & seda 学习二
2011-11-03 09:11 1199mule的jdbc,配置seda以及vm的初步认识 java ... -
mule & seda的学习之一
2011-11-02 17:18 1316mule:轻量级的ESB消息框架,可以和spring集成,支持 ... -
一个不错的MULE主文件
2011-11-02 17:06 1983mule & seda 的使用每分钟处理5000单,发 ... -
mule示例分析
2011-11-02 14:55 7017一、Hello World (主要演示了两个service c ... -
Mule 官方例子研究
2011-10-28 14:26 1927Mule 官方例子研究 一、 ...
相关推荐
### Mule基本节点解释 #### 一、基本标签与配置结构 Mule 是一款非常强大的企业级集成平台,主要用于构建连接不同的系统和服务的应用程序。在 Mule 的配置文件(通常是 XML 文件)中,包含了多种标签来组织和配置 ...
### Mule 3.2 节点详解 Mule 3.2 是一款非常流行的集成平台,它基于企业服务总线(Enterprise Service Bus, ESB)架构设计而成,能够帮助开发者轻松地构建复杂的集成解决方案。本文将详细介绍 Mule 3.2 中的关键...
关于在tomcat上进行mule多线程数量参数配置
### MULE ESB 节点使用说明中文文档 #### MULE ESB 概述与部署 MULE ESB(Enterprise Service Bus)是一种强大的集成平台,用于构建高度可扩展的应用程序和服务。它允许开发人员轻松地连接不同的应用程序、API 和...
`proxy.properties`则可能涉及到网络代理设置,如果Mule ESB需要通过代理服务器访问外部资源,此文件会包含代理的相关配置。 最后,`MULE_LICENSE.txt`是Mule ESB的许可协议文件,它详细阐述了软件的使用条款和条件...
在config目录下新增一个sayHello-mule-config.xml配置文件,该文件用于定义Mule项目的配置信息。该文件的内容包括Mule项目的命名空间、SchemaLocation等信息。 四、Mule项目的配置和部署 在Mule项目中,需要配置...
Mule ESB使用XML或图形化的Mule Studio进行配置。开发者可以创建数据流,定义消息如何在各个服务之间流动,包括数据转换、错误处理和流控制。Mule的工作流程通常包括消息的接收、转换、路由和发送。 **5. 安全性** ...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
mule的配置文档 自己整理,很实用滴,希望大家可以和我一样少走歪路
- 在Mule配置文件(如`mule-config.xml`)中定义JMS连接工厂。 - 创建JMS收发消息的端点(Endpoints),用于消费和发布消息。 - 编写Mule流程,指定何时和如何发送和接收消息。 - 配置ActiveMQ的URL、用户名和密码等...
5. **Mule配置文件** ".project" 和 "mule-deploy.properties" 是Mule项目的元数据文件,分别用于Eclipse项目设置和Mule应用的部署属性。"mule-app.properties" 可能包含了应用级别的配置变量,这些变量可以在整个...
2. **MULE配置与部署**:用户指南将详细介绍如何配置MULE实例,包括设置环境变量、安装和启动MULE服务器,以及部署MULE应用到不同的运行时环境,如MULE Standalone或CloudHub。 3. **连接器(Connectors)**:MULE ...
首先,需要下载MuleStudio的最新版本,例如MuleStudio-for-win-32bit-3.5.0-201310031601.zip,然后解压到安装目录,设置工作空间,安装Mule ESB Runtimes for Studio插件。 三、Webservice发布 为了发布...
在描述中提到,“MULE ESB-4.1企业版运行环境”意味着这是一个完整的、预配置的环境,用户可以直接在其上运行由AnyPoint Studio开发的Mule应用。AnyPoint Studio是MuleSoft提供的一个集成开发环境(IDE),用于创建...
这部分介绍了如何在Mule Studio中配置和使用云服务连接器,比如Salesforce云连接器和Twitter云连接器,它们用于连接云计算平台上的服务。 11. 全局配置 全局配置部分讲解了如何创建和管理全局元素,以及如何配置云...
- 通过修改“conf/mule-deploy.properties”文件来配置应用属性和连接参数。 - 使用命令行工具或启动脚本(如“bin/mule.bat”或“bin/mule.sh”)启动Mule ESB。 5. **监控与管理**: - Mule ESB 3.9.0提供了一...