- 浏览: 2490983 次
- 性别:
- 来自: 成都
文章分类
最新评论
-
nation:
你好,在部署Mesos+Spark的运行环境时,出现一个现象, ...
Spark(4)Deal with Mesos -
sillycat:
AMAZON Relatedhttps://www.godad ...
AMAZON API Gateway(2)Client Side SSL with NGINX -
sillycat:
sudo usermod -aG docker ec2-use ...
Docker and VirtualBox(1)Set up Shared Disk for Virtual Box -
sillycat:
Every Half an Hour30 * * * * /u ...
Build Home NAS(3)Data Redundancy -
sillycat:
3 List the Cron Job I Have>c ...
Build Home NAS(3)Data Redundancy
最近又要使用MULE了。
其实我不是很喜欢这个东东,因为用的人少,资料比较少。
这次的应用主要是需要在受到POP3的邮件后,对取道邮件内容,根据邮件内容,连接数据库
查询资料,根据这个资料判断进入哪个ENDPOINT。
比较以前的MULE,增加了如下两个内容:
1、连接ORACLE数据库
2、在执行ENDPOINT的时候增加了一个判断
3、顺道把ACTIVEMQ的配置修改到了SPRING中
注意:
比较郁闷的是,一些比如ORACLE的驱动,IBATIS的JAR包都要拷贝到MULE的LIB的USER里面去,不然会找不到类
主要针对MULE的配置文件,email-config.xml做了修改:
<container-context
className="org.mule.extras.spring.SpringContainerContext"
name="spring">
<properties>
<property name="configFile"
value="classpath:/applicationContext.xml" />
</properties>
</container-context>
配置了,启动MULE的时候,启动SPRING的CONTAINER,
<connector name="activeMQConnector"
className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.1" />
<container-property name="connectionFactory"
reference="activeMqConnectionFactory" container="spring" />
</properties>
</connector>
ACTIVEMQ的配置转移到了SPRING的配置文件:applicationContext.xml中。
<model name="emailSample">
<mule-descriptor name="EmailActiveMQUM"
implementation="com.megaeyes.service.impl.EmailActiveMQManagerImpl">
<inbound-router>
<endpoint name="pop3email"
address="pop3://gateway:megaeyes@192.168.10.103"
transformers="EmailMessageTransformer">
<properties>
<property name="checkFrequency" value="10000" />
<property name="deleteReadMessages"
value="true" />
</properties>
</endpoint>
</inbound-router>
<outbound-router>
<router
className="com.megaeyes.utils.TransactionJoiningRouter">
<endpoint name="fileEndpoint" address="file:///d:/logs">
<properties>
<property name="filename" value="emailActiveMQ.txt" />
<property name="outputAppend" value="true" />
</properties>
</endpoint>
<endpoint name="jmsEndpointOne" address="jms://MessageOne"
connector="activeMQConnector" />
<endpoint name="jmsEndpointTwo" address="jms://MessageTwo"
connector="activeMQConnector" />
</router>
</outbound-router>
</mule-descriptor>
</model>
ENDPOINT里面的OUTBOUND-ROUTER做了改变,改为用自己类来处理:
com.megaeyes.utils.TransactionJoiningRouter
这里加入了根据内容来判断选择不同的ENDPOINT的机制,选择把结果存放到不同的队列MESSAGEONE或者MESSAGETWO中
在自己写的类
com.megaeyes.utils.TransactionJoiningRouter.java中:
UMOEndpoint endpoint = getEndpoint(i, message);
MessageBean o = (MessageBean) message.getPayload();
// System.out.println("message class name: "
// + o.getClass().getName());
// System.out.println("endpoint name: " + endpoint.getName());
// TODO use the name of the endpoint to check if proess
if (endpoint.getName().equalsIgnoreCase("fileEndpoint")) {
continue;
}
endpoint.setRemoteSync(false);
try {
dispatch(session, message, endpoint);
} catch (UMOException e) {
throw new CouldNotRouteOutboundMessageException(message,
endpoint);
}
可以得到MESSAGE中传递过来的信息,根据信息判断是否需要dispatch当前的ENDPOINT,当然ENDPOINT的名字在这里也可以得到
贴出完整的email-config.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD mule-configuration XML V1.0//EN"
"http://mule.mulesource.org/dtds/mule-configuration.dtd">
<mule-configuration id="Mule_Echo_Sample" version="1.0">
<description>This is the email mule ESB system</description>
<container-context
className="org.mule.extras.spring.SpringContainerContext"
name="spring">
<properties>
<property name="configFile"
value="classpath:/applicationContext.xml" />
</properties>
</container-context>
<connector name="activeMQConnector"
className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.1" />
<container-property name="connectionFactory"
reference="activeMqConnectionFactory" container="spring" />
</properties>
</connector>
<!--
<connector name="jdbcConnector"
className="org.mule.providers.jdbc.JdbcConnector">
<properties>
<container-property name="dataSource" reference="dataSource"
container="spring" />
</properties>
</connector>
-->
<transformers>
<transformer name="JMSMessageToString"
className="com.megaeyes.utils.JMSMessageTransformer"
returnClass="java.lang.String" />
<transformer name="HttpRequestToSoapRequest"
className="org.mule.providers.soap.transformers.HttpRequestToSoapRequest" />
<transformer name="EmailMessageTransformer"
className="com.megaeyes.utils.EmailMessageTransformer">
</transformer>
</transformers>
<model name="emailSample">
<mule-descriptor name="EmailActiveMQUM"
implementation="com.megaeyes.service.impl.EmailActiveMQManagerImpl">
<inbound-router>
<endpoint name="pop3email"
address="pop3://gateway:megaeyes@192.168.10.103"
transformers="EmailMessageTransformer">
<properties>
<property name="checkFrequency" value="10000" />
<property name="deleteReadMessages"
value="true" />
</properties>
</endpoint>
</inbound-router>
<outbound-router>
<router
className="com.megaeyes.utils.TransactionJoiningRouter">
<endpoint name="fileEndpoint" address="file:///d:/logs">
<properties>
<property name="filename" value="emailActiveMQ.txt" />
<property name="outputAppend" value="true" />
</properties>
</endpoint>
<endpoint name="jmsEndpointOne" address="jms://MessageOne"
connector="activeMQConnector" />
<endpoint name="jmsEndpointTwo" address="jms://MessageTwo"
connector="activeMQConnector" />
</router>
</outbound-router>
</mule-descriptor>
</model>
</mule-configuration>
applicationContext.xml配置文件其实和spring的配置文件很相似:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="activeMqConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616</value>
</property>
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@192.168.10.11:1688:test</value>
</property>
<property name="username">
<value>dev</value>
</property>
<property name="password">
<value>dev</value>
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:/sqlmap-config.xml</value>
</property>
<property name="useTransactionAwareDataSource" value="true"></property>
</bean>
<bean id="emailJmsDao"
class="com.megaeyes.dao.impl.EmailJmsDaoImpl" />
</beans>
自己的判断类TransactionJoiningRouter.java:
package com.megaeyes.utils;
import org.mule.impl.MuleMessage;
import org.mule.routing.outbound.FilteringOutboundRouter;
import org.mule.umo.UMOException;
import org.mule.umo.UMOMessage;
import org.mule.umo.UMOSession;
import org.mule.umo.endpoint.UMOEndpoint;
import org.mule.umo.routing.CouldNotRouteOutboundMessageException;
import org.mule.umo.routing.RoutingException;
import com.megaeyes.sms.gateway.databean.MessageBean;
public class TransactionJoiningRouter extends FilteringOutboundRouter {
public UMOMessage route(UMOMessage message, UMOSession session,
boolean synchronous) throws RoutingException {
final int endpointsCount = endpoints.size();
if (endpoints == null || endpointsCount == 0) {
}
if (enableCorrelation != ENABLE_CORRELATION_NEVER) {
boolean correlationSet = message.getCorrelationId() != null;
if (correlationSet
&& (enableCorrelation == ENABLE_CORRELATION_IF_NOT_SET)) {
logger
.debug("CorrelationId is already set, not setting Correlation group size");
} else {
// the correlationId will be set by the AbstractOutboundRouter
message.setCorrelationGroupSize(endpointsCount);
}
}
MessageBean o = (MessageBean) message.getPayload();
String mobileNumberStr = o.getTargetNumber();
if (StringUtil.isNotBlank(mobileNumberStr)) {
// 透传,分析号码
String[] mobileNumbers = mobileNumberStr.split(",");
if (mobileNumbers != null && mobileNumbers.length > 0) {
for (int j = 0; j < mobileNumbers.length; j++) {
String temp = mobileNumbers[j];
System.out.println(j + " temp number :" + temp);
if (checkIfMobilePhoneNumber(temp)) {
//update the targetNumber
MessageBean tMessage = (MessageBean)o.clone();
tMessage.setTargetNumber(temp);
UMOMessage tObj = new MuleMessage(tMessage);
//手机号码 放队列1
processMethod(tObj, session, endpointsCount, "jmsEndpointOne");
}else{
MessageBean tMessage = (MessageBean)o.clone();
tMessage.setTargetNumber(temp);
UMOMessage tObj = new MuleMessage(tMessage);
//小灵通号码 放队列2
processMethod(tObj, session, endpointsCount, "jmsEndpointTwo");
}
}
}
} else {
// 不透传 放队列1
processMethod(message, session, endpointsCount, "jmsEndpointOne");
}
return null;
}
private void processMethod(UMOMessage message, UMOSession session,
int endpointsCount, String methodName)
throws CouldNotRouteOutboundMessageException {
synchronized (endpoints) {
for (int i = 0; i < endpointsCount; i++) {
UMOEndpoint endpoint = getEndpoint(i, message);
if (!endpoint.getName().equalsIgnoreCase(methodName)) {
continue;
}
endpoint.setRemoteSync(false);
try {
dispatch(session, message, endpoint);
} catch (UMOException e) {
throw new CouldNotRouteOutboundMessageException(message,
endpoint);
}
}
}
}
// 小灵通 区号+电话号(7或8位)
// 手机 手机号码一定是13**********共11位数
private boolean checkIfMobilePhoneNumber(String mobileNumber) {
boolean flag = false;
if(StringUtil.isBlank(mobileNumber)){
return flag;
}
if(mobileNumber.startsWith("0")){
//小灵通
flag = false;
}else{
//手机
flag = true;
}
return flag;
}
}
其实我不是很喜欢这个东东,因为用的人少,资料比较少。
这次的应用主要是需要在受到POP3的邮件后,对取道邮件内容,根据邮件内容,连接数据库
查询资料,根据这个资料判断进入哪个ENDPOINT。
比较以前的MULE,增加了如下两个内容:
1、连接ORACLE数据库
2、在执行ENDPOINT的时候增加了一个判断
3、顺道把ACTIVEMQ的配置修改到了SPRING中
注意:
比较郁闷的是,一些比如ORACLE的驱动,IBATIS的JAR包都要拷贝到MULE的LIB的USER里面去,不然会找不到类
主要针对MULE的配置文件,email-config.xml做了修改:
<container-context
className="org.mule.extras.spring.SpringContainerContext"
name="spring">
<properties>
<property name="configFile"
value="classpath:/applicationContext.xml" />
</properties>
</container-context>
配置了,启动MULE的时候,启动SPRING的CONTAINER,
<connector name="activeMQConnector"
className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.1" />
<container-property name="connectionFactory"
reference="activeMqConnectionFactory" container="spring" />
</properties>
</connector>
ACTIVEMQ的配置转移到了SPRING的配置文件:applicationContext.xml中。
<model name="emailSample">
<mule-descriptor name="EmailActiveMQUM"
implementation="com.megaeyes.service.impl.EmailActiveMQManagerImpl">
<inbound-router>
<endpoint name="pop3email"
address="pop3://gateway:megaeyes@192.168.10.103"
transformers="EmailMessageTransformer">
<properties>
<property name="checkFrequency" value="10000" />
<property name="deleteReadMessages"
value="true" />
</properties>
</endpoint>
</inbound-router>
<outbound-router>
<router
className="com.megaeyes.utils.TransactionJoiningRouter">
<endpoint name="fileEndpoint" address="file:///d:/logs">
<properties>
<property name="filename" value="emailActiveMQ.txt" />
<property name="outputAppend" value="true" />
</properties>
</endpoint>
<endpoint name="jmsEndpointOne" address="jms://MessageOne"
connector="activeMQConnector" />
<endpoint name="jmsEndpointTwo" address="jms://MessageTwo"
connector="activeMQConnector" />
</router>
</outbound-router>
</mule-descriptor>
</model>
ENDPOINT里面的OUTBOUND-ROUTER做了改变,改为用自己类来处理:
com.megaeyes.utils.TransactionJoiningRouter
这里加入了根据内容来判断选择不同的ENDPOINT的机制,选择把结果存放到不同的队列MESSAGEONE或者MESSAGETWO中
在自己写的类
com.megaeyes.utils.TransactionJoiningRouter.java中:
UMOEndpoint endpoint = getEndpoint(i, message);
MessageBean o = (MessageBean) message.getPayload();
// System.out.println("message class name: "
// + o.getClass().getName());
// System.out.println("endpoint name: " + endpoint.getName());
// TODO use the name of the endpoint to check if proess
if (endpoint.getName().equalsIgnoreCase("fileEndpoint")) {
continue;
}
endpoint.setRemoteSync(false);
try {
dispatch(session, message, endpoint);
} catch (UMOException e) {
throw new CouldNotRouteOutboundMessageException(message,
endpoint);
}
可以得到MESSAGE中传递过来的信息,根据信息判断是否需要dispatch当前的ENDPOINT,当然ENDPOINT的名字在这里也可以得到
贴出完整的email-config.xml配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mule-configuration PUBLIC "-//MuleSource //DTD mule-configuration XML V1.0//EN"
"http://mule.mulesource.org/dtds/mule-configuration.dtd">
<mule-configuration id="Mule_Echo_Sample" version="1.0">
<description>This is the email mule ESB system</description>
<container-context
className="org.mule.extras.spring.SpringContainerContext"
name="spring">
<properties>
<property name="configFile"
value="classpath:/applicationContext.xml" />
</properties>
</container-context>
<connector name="activeMQConnector"
className="org.mule.providers.jms.JmsConnector">
<properties>
<property name="specification" value="1.1" />
<container-property name="connectionFactory"
reference="activeMqConnectionFactory" container="spring" />
</properties>
</connector>
<!--
<connector name="jdbcConnector"
className="org.mule.providers.jdbc.JdbcConnector">
<properties>
<container-property name="dataSource" reference="dataSource"
container="spring" />
</properties>
</connector>
-->
<transformers>
<transformer name="JMSMessageToString"
className="com.megaeyes.utils.JMSMessageTransformer"
returnClass="java.lang.String" />
<transformer name="HttpRequestToSoapRequest"
className="org.mule.providers.soap.transformers.HttpRequestToSoapRequest" />
<transformer name="EmailMessageTransformer"
className="com.megaeyes.utils.EmailMessageTransformer">
</transformer>
</transformers>
<model name="emailSample">
<mule-descriptor name="EmailActiveMQUM"
implementation="com.megaeyes.service.impl.EmailActiveMQManagerImpl">
<inbound-router>
<endpoint name="pop3email"
address="pop3://gateway:megaeyes@192.168.10.103"
transformers="EmailMessageTransformer">
<properties>
<property name="checkFrequency" value="10000" />
<property name="deleteReadMessages"
value="true" />
</properties>
</endpoint>
</inbound-router>
<outbound-router>
<router
className="com.megaeyes.utils.TransactionJoiningRouter">
<endpoint name="fileEndpoint" address="file:///d:/logs">
<properties>
<property name="filename" value="emailActiveMQ.txt" />
<property name="outputAppend" value="true" />
</properties>
</endpoint>
<endpoint name="jmsEndpointOne" address="jms://MessageOne"
connector="activeMQConnector" />
<endpoint name="jmsEndpointTwo" address="jms://MessageTwo"
connector="activeMQConnector" />
</router>
</outbound-router>
</mule-descriptor>
</model>
</mule-configuration>
applicationContext.xml配置文件其实和spring的配置文件很相似:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans default-autowire="byName">
<bean id="activeMqConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL">
<value>tcp://localhost:61616</value>
</property>
</bean>
<bean id="dataSource"
class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName">
<value>oracle.jdbc.driver.OracleDriver</value>
</property>
<property name="url">
<value>jdbc:oracle:thin:@192.168.10.11:1688:test</value>
</property>
<property name="username">
<value>dev</value>
</property>
<property name="password">
<value>dev</value>
</property>
</bean>
<bean id="sqlMapClient"
class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
<property name="configLocation">
<value>classpath:/sqlmap-config.xml</value>
</property>
<property name="useTransactionAwareDataSource" value="true"></property>
</bean>
<bean id="emailJmsDao"
class="com.megaeyes.dao.impl.EmailJmsDaoImpl" />
</beans>
自己的判断类TransactionJoiningRouter.java:
package com.megaeyes.utils;
import org.mule.impl.MuleMessage;
import org.mule.routing.outbound.FilteringOutboundRouter;
import org.mule.umo.UMOException;
import org.mule.umo.UMOMessage;
import org.mule.umo.UMOSession;
import org.mule.umo.endpoint.UMOEndpoint;
import org.mule.umo.routing.CouldNotRouteOutboundMessageException;
import org.mule.umo.routing.RoutingException;
import com.megaeyes.sms.gateway.databean.MessageBean;
public class TransactionJoiningRouter extends FilteringOutboundRouter {
public UMOMessage route(UMOMessage message, UMOSession session,
boolean synchronous) throws RoutingException {
final int endpointsCount = endpoints.size();
if (endpoints == null || endpointsCount == 0) {
}
if (enableCorrelation != ENABLE_CORRELATION_NEVER) {
boolean correlationSet = message.getCorrelationId() != null;
if (correlationSet
&& (enableCorrelation == ENABLE_CORRELATION_IF_NOT_SET)) {
logger
.debug("CorrelationId is already set, not setting Correlation group size");
} else {
// the correlationId will be set by the AbstractOutboundRouter
message.setCorrelationGroupSize(endpointsCount);
}
}
MessageBean o = (MessageBean) message.getPayload();
String mobileNumberStr = o.getTargetNumber();
if (StringUtil.isNotBlank(mobileNumberStr)) {
// 透传,分析号码
String[] mobileNumbers = mobileNumberStr.split(",");
if (mobileNumbers != null && mobileNumbers.length > 0) {
for (int j = 0; j < mobileNumbers.length; j++) {
String temp = mobileNumbers[j];
System.out.println(j + " temp number :" + temp);
if (checkIfMobilePhoneNumber(temp)) {
//update the targetNumber
MessageBean tMessage = (MessageBean)o.clone();
tMessage.setTargetNumber(temp);
UMOMessage tObj = new MuleMessage(tMessage);
//手机号码 放队列1
processMethod(tObj, session, endpointsCount, "jmsEndpointOne");
}else{
MessageBean tMessage = (MessageBean)o.clone();
tMessage.setTargetNumber(temp);
UMOMessage tObj = new MuleMessage(tMessage);
//小灵通号码 放队列2
processMethod(tObj, session, endpointsCount, "jmsEndpointTwo");
}
}
}
} else {
// 不透传 放队列1
processMethod(message, session, endpointsCount, "jmsEndpointOne");
}
return null;
}
private void processMethod(UMOMessage message, UMOSession session,
int endpointsCount, String methodName)
throws CouldNotRouteOutboundMessageException {
synchronized (endpoints) {
for (int i = 0; i < endpointsCount; i++) {
UMOEndpoint endpoint = getEndpoint(i, message);
if (!endpoint.getName().equalsIgnoreCase(methodName)) {
continue;
}
endpoint.setRemoteSync(false);
try {
dispatch(session, message, endpoint);
} catch (UMOException e) {
throw new CouldNotRouteOutboundMessageException(message,
endpoint);
}
}
}
}
// 小灵通 区号+电话号(7或8位)
// 手机 手机号码一定是13**********共11位数
private boolean checkIfMobilePhoneNumber(String mobileNumber) {
boolean flag = false;
if(StringUtil.isBlank(mobileNumber)){
return flag;
}
if(mobileNumber.startsWith("0")){
//小灵通
flag = false;
}else{
//手机
flag = true;
}
return flag;
}
}
评论
3 楼
sillycat
2010-10-22
我当时直接传递的是自己的POJO,MessageBean o = (MessageBean),没有传递过ArrayList,你要测试一下。
2 楼
陈文景
2010-10-15
我的qq是593194723 可以的希望您能加我 指点下我 。。。谢谢
1 楼
陈文景
2010-10-15
你好 我最近在入手这方面的东西
1、请问下 我暴露了一个axis的服务,客户端调用时,mule返回的是一个ArrayList
类型的对象,我试了一下,传回客户端没有问题 但是在客户端收到的message里却
不能解析,请问下我该怎么解析这个Arraylist呢,就是把其中保存的字符串打印出来。。
2、服务端回馈的信息是不是都是Object类型的呢,还有需要自己写格式解析类吗。。。
3、如果服务端要返回一个数据库查询后的结果集呢?
由于项目期限要到 十分紧急 希望您指点下 不胜感激
1、请问下 我暴露了一个axis的服务,客户端调用时,mule返回的是一个ArrayList
类型的对象,我试了一下,传回客户端没有问题 但是在客户端收到的message里却
不能解析,请问下我该怎么解析这个Arraylist呢,就是把其中保存的字符串打印出来。。
2、服务端回馈的信息是不是都是Object类型的呢,还有需要自己写格式解析类吗。。。
3、如果服务端要返回一个数据库查询后的结果集呢?
由于项目期限要到 十分紧急 希望您指点下 不胜感激
发表评论
-
SOAP AXIS2 with HTTPS
2011-11-24 15:28 4192SOAP AXIS2 with HTTPS 1. sampl ... -
xfire后续问题补充
2010-01-06 14:34 2595xfire后续问题补充 问题一:xfire的方法中,需要知道 ... -
AXIS实现WebService
2010-01-06 11:51 3931AXIS实现WebService webservice里面对 ... -
xfire的webservice安全机制之签名
2010-01-05 23:31 1351xfire的webservice安全机制之签名 服务端配置修 ... -
xfire的webservice安全机制之签名
2010-01-05 23:29 1585xfire的webservice安全机制之签名 服务端配置修 ... -
xfire的webservice安全机制之用户校验
2010-01-05 23:29 2079xfire的webservice安全机制之用户校验 xfir ... -
xfire的webservice安全机制之加密(三)
2010-01-05 23:29 1231如何用KEYTOOL工具生成私匙和公匙 1、通过别名和密码创 ... -
xfire的webservice安全机制之加密(二)
2010-01-05 23:28 2793xfire的webservice安全机制 下面是客户端调用的 ... -
xfire的webservice安全机制之加密(一)
2010-01-05 23:28 2847xfire的webservice安全机制 在原来使用xfir ... -
spring下的webservice之xfire
2010-01-05 23:25 2006http://xfire.codehaus.org/ xfi ... -
Xfire在Weblogic10.3上发布的问题
2010-01-05 10:37 6282Xfire在Weblogic10.3上发布的问题 最近项目的 ... -
mule2.2.x架构(八)部署到WEB项目
2010-01-05 10:36 1931mule2.2.x架构(八)部署到WEB项目 所有的示例文档 ... -
xfire的Client的WSDL调用
2010-01-05 10:36 3112xfire的Client的WSDL调用 也只是想测试一下,如 ... -
mule2.2.x架构(七)示例学习LoanBroker
2010-01-05 10:36 1672mule2.2.x架构(七)示例学习LoanBroker 所 ... -
xfire的client的JAVA调用方式
2010-01-05 10:35 3501xfire的client的JAVA调用方式 平时我们调用xf ... -
mule2.2.x架构(六)示例学习scripting
2010-01-05 10:35 1442mule2.2.x架构(六)示例学习scripting 所有 ... -
mule2.2.x架构(五)示例学习errorHandle
2010-01-05 10:34 1632mule2.2.x架构(五)示例学习errorHandle ... -
mule2.2.x架构(四)示例学习StockQuote
2010-01-05 10:34 1844mule2.2.x架构(四)示例学习StockQuote 所 ... -
mule2.2.x架构(三)示例学习hello
2010-01-05 10:34 1835mule2.2.x架构(三)示例学习hello 所有的示例文 ... -
mule2.2.x架构(二)示例学习echo
2010-01-05 10:33 1739mule2.2.x架构(二)示例学习echo 所有的示例文档 ...
相关推荐
浅谈Mule ESB架构设计.doc
Mule ESB是一个基于Java的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的...Mule ESB的架构 Mule ESB的技术规范 Mule ESB的工作原理 Mule ESB的技术和特点 Mule ESB3的新功能 小结
mule的强大不用多说。 Mule 入门、介绍及架构理解
Mule是一个轻量级的基于Java的ESB消息框架,它允许用户快捷地连接多个应用并且在这些应用之间交换数据。Mule使用了SOA的体系结构思想,可以方便的集成已有的应用。它是可升级的、高分布式的对象代理,可以通过异步...
Bus(ESB)架构思想。ESB的主要特性是通过扮演一个中转系统的角色,允许不同的应用系统交互,中转系统在内网或Internet上的应用系统间搬运数据。 目前市场上有一些商业的ESB实现。尽管如此,大部分提供有限的功能,或...
Mule 是一个基于ESB架构理念的消息平台。Mule 的核心是一个基于SEDA的服务容器,该容器管理被称为通用消息对象(Universal Message Objects /UMO)的服务对象,而这些对象都是POJO。所有UMO和其他应用之间的通信都是...
ESB简介和功能模型和特性 各种主流开源ESB产品简介 MULE架构介绍 核心系统ESB使用情况介绍
虽然Mule没有基于JBI来构建其架构,但是它为JBI容器提供了JBI适配器,应此可以很好地与JBI容器整合在一起。而 Mule更关注其灵活性,高效性以及易开发性。从2005年发表1.0版本以来,Mule吸引了越来越多的关注者,成为...
虽然Mule没有基于JBI来构建其架构,但是它为JBI容器提供了JBI适配器,因此可以很好地与JBI容器整合在一起。而 Mule更关注其灵活性,高效性以及易开发性。从2005年发表1.0版本以来,Mule吸引了越来越多的关注者,成为...
该架构不使用EJB来实现企业总线而使用轻量级ESB:Mule作为集成服务的基础;使用Axis作为Web Service的实现;充分使用可配置的策略实现各类系统组件的灵活拆装。系统外部仅开放SOAP/Web Services接口提供外部系统服务...
使用Mule ESB的过程中,体会到其快速的开发效率,以及优秀的架构设计。本课程主要是介绍mule esb基本应用。主要以http为主。日常使用中esb主要还是路由功能,把一些系统的借口接入esb。本课主要介绍http接入,数据库...
–ServiceMix架构–ServiceMix组件概览–ServiceMix实战–Demo–Mule的工作机理–Mule组件概览–Mule实战–Demo–削弱了部门间的协作–影响资源的整合Point-to-PointsolutionHub-and-...作为ASF的一员,它集成了包括...
在使用Mule ESB时我有一个惊人发现,即它让企业集成和面向服务这些个复杂工作变得容易。使用商业ESB就意味着,前期巨额的许可费用,繁重的安装过程,不得不学习新的IDE,必须从可用文档和售后咨询那里学习。在你处理...
MULE是一款开源的企业服务总线平台,可为企业各应用提供服务集成,支持基于Java的各种远程消息通信协议,如RMI、CORBA、...资料含MULE的环境、配置、架构、集成、工具与使用个方面的指南,是应用MULE的绝佳参考资料。
开始入冬时知识储藏啦。前几年听一位高人讲过ESB这个概念,但一直没有时间去仔细了解。而近段时间。...在这里,我们将关注开源的ESB的产品,目前可用的产品有:Mule和ApacheServiceMix。如果你问架构师,