- 浏览: 550916 次
- 来自: 广州
文章分类
最新评论
-
moshalanye:
不是没人顶,而是江南白衣 是SpringSide的创始人,C ...
编写对GC友好,又不泄漏的代码 -
awdxzc:
请教,stand meeting要怎么开效率比较高? 要求团队 ...
假如只能把四种软件开发实践写在手背上 -
congjl2002:
你好,我使用的JDK6,以下信息是否说明MaxPermSize ...
JDK5.0垃圾收集优化之--Don't Pause -
步青龙:
好书啊,顶下!!!
架构师09年书单 -
Wuaner:
这么好的文章, 没人顶?! 引用6.内存泄漏 java 不 ...
编写对GC友好,又不泄漏的代码
与Mule 2.0抵死缠绵了两周,喜忧掺半。但只在2.0之后,Mule才算真正
站到了ESB的起跑线上。
完整的笔记见我的Wiki: http://wiki.springside.org.cn/display/calvin/Mule
, 这里主要列一下实际的升级感受。
- InfoQ中文站新闻
- Mule2.0的What's new
- Migrating Mule 1.x to 2.0
- Pattern Based Development with Mule 2.0 《Open-Source ESBs in Action》作者文章
1. 很Spring,很SCA的配置文件
- 全Spring又全nameSpace化的配置文件,简洁而规范,在IDE中有良好的提示。
尤其是transport相关的endpoint的改进明显,原来的URI<endpoint address= "pop3://bob:secret@localhost:62002"> 或如下的connector
<!----><
connector
name
="SystemStreamConnector"
className
="org.mule.providers.stream.SystemStreamConnector"
>
< properties >
< property name ="promptMessage" value ="Please enter something: " />
< property name ="messageDelayTime" value ="1000" />
</ properties >
</ connector >
< properties >
< property name ="promptMessage" value ="Please enter something: " />
< property name ="messageDelayTime" value ="1000" />
</ properties >
</ connector >
改为transport特定的namespace后,IDE中清晰显示了可选的配置项。
<!----><
stdio:connector
name
="SystemStreamConnector"
promptMessage
="Please enter something: "
messageDelayTime
="1000"
/>
- SCA的Service/Component概念。
Service/Component代替了原来注定要被遗忘的MuleDescriptor,其中Component定义业务逻辑的POJO,Service定义如何以服务的方式管理组件的配置。
在POJO中调用远程服务的Nested Router也改为了很SCA的Binding。
Component也有Component 与 PooledComponent的选项。完整的例子如下:
<!----><
pooled-component
>
< spring-object bean ="mySpringPojo" />
< binding interface ="org.mule.example.loanbroker.credit.CreditAgencyService" >
< outbound-endpoint ref ="CreditAgency" />
</ binding >
< pooling-profile exhaustedAction ="WHEN_EXHAUSTED_FAIL" initialisationPolicy ="INITIALISE_ALL"
maxActive ="1" maxIdle ="2" maxWait ="3" />
</ pooled-component >
< spring-object bean ="mySpringPojo" />
< binding interface ="org.mule.example.loanbroker.credit.CreditAgencyService" >
< outbound-endpoint ref ="CreditAgency" />
</ binding >
< pooling-profile exhaustedAction ="WHEN_EXHAUSTED_FAIL" initialisationPolicy ="INITIALISE_ALL"
maxActive ="1" maxIdle ="2" maxWait ="3" />
</ pooled-component >
上文按pooling-profile定义的pooled-component,在spring中定义mySpringPojo,并将一个远程的CXF Endpoint binding到POJO的CreditAgencyService变量中,可直接调用;
- 可视化拖拽的Eclipse 插件Mule IDE。
虽然还非常原始,但总算有个盼头。
2. 架构的更改
- Web Service支持增强
随着CXF作者的加入,Web Service这事实上SOA里最重要的Transport得到了加强,WSDL终于可以通过annotation准确配置。
虽然无奈,就冲这个理由就应该升级到2.0了。不是2.0太好,而是1.4太差了。 - REST支持增强
Mule RESTPack ,支持apache abdera(Atom Publish协议实现),Jersey(JSR131 RESTful WebService实现)和Restlet 三种Transport。 - 代码结构的合理化
抽象出相对稳定的org.mule.api接口包,代替原来的org.mule.umo包。
开发团队还检查调整了Mule中所有对象的定义,使其更加准确。 - 各个模块的升级
如核心MuleManager大对象拆成MuleContext and Registry,运行时Reistry支持动态加载Service,支持向OSGI进军;
如以流的方式转换处理消息。
如SEDA模型定义的细化,见后。 - 工具增强
Mule Galaxy SOA治理工具(开源), Mule Saturn 消息流监控工具,Mule HQ 底层监控工具。
不过还没试用不知道实际效果如何。
3. 遗憾的地方:
- 性能下降
无论是代替XFire的CXF还是Mule 2.0,都拖得性能大大下降。
用一个简单例子测试,Mule 1.4+XFire : Mule 1.4 + CXF : Mule 2.0 + CXF 的每秒事务数对比是15000:10000:8000。
- 仍然没有自带的集群
,负载均衡,流量控制实现。
不像BEA、ServiceMix都使用JMS的底层,Mule使用vm queue在单一JVM的节点间流动。
我们团队主要用TerraCotta 在集群里同步状态数据,流量控制与负载均衡也是自己实现。 - CXF transport 仍然使用Mule自己实现的Http Connector。
CXF Standlone也是用Jetty的,看tomcat们努力的劲头,相信谁都能随便实现一个不错的Http Connector。 - 从1.4升到2.0非常的花时间。
估计团队重构的太兴奋了,从代码到配置文件再到XFire to CXF,一些代码级修改还没文档详述。 - 文档从1.4版更新到2.0版的进度太慢,而且文档仍然简略。
- 质量仍然需要在使用中检验。
文档说2.0版本的比1.x版本增加了30%的单元测试用例,按理来说项目质量应该提高了。
但还是被我发现了在很重要的AbstractEntryPointResolver类里,居然有内存泄漏,原因是用没有重载Object的equals()函数的StringBuffer作为HashMap的key,结果map永远都在增大。
这说明了,开源项目的质量,最终是靠一个积极使用和反馈的用户群和一个活跃的开发团队,"用"出来的。
评论
18 楼
xiaObaiRabbit
2008-10-08
偶像 因为第一家公司就用springside1.0M3版本
17 楼
john813
2008-09-28
江南白衣 写道
hehe,关于TC,你可以问问huihoo的程勇,他现在准备接TC在国内的技术支持。
请问哪里能联系到他?国内有讨论TC的论坛吗 ?
16 楼
江南白衣
2008-09-28
hehe,关于TC,你可以问问huihoo的程勇,他现在准备接TC在国内的技术支持。
15 楼
john813
2008-09-27
江南白衣,惊然发现您用到terracotta了,能谈谈对它的使用感受吗? 本人对此技术非常感兴趣,有心想用,但不太敢。先谢过了。
--
刚看过您关于terracotta的帖子。想知道在项目中的使用感受,比如用terracotta和SNA(Share Nothing Architect)相比的好处、要付出的代价(相比SNA)。以及同JBossCach这类产品在应用场景上的对比。真是有很多问题,一时想不起来怎么问。您就想那说那吧。
--
比如一个具体问题是,如果把pojo存储在一个TC服务器网格中,相信TC会把该pojo在网格的所有节点中同步。但其是否有一种机制可以使该pojo同它的持久存储(比如数据库)同步?而且最好是对应用层透明? 如果有,TC能否保证pojo在TC中的更新和同数据库的同步是事务性的 ?
--
感觉引入terracotta会对系统架构产生重大影响。基于jvm的cluster、纯pojo的缓冲、这样我们可以用廉价的linux box堆积出一个jvm网格... terracotta给我们描述的场景很诱人,您怎么看 ?
--
刚看过您关于terracotta的帖子。想知道在项目中的使用感受,比如用terracotta和SNA(Share Nothing Architect)相比的好处、要付出的代价(相比SNA)。以及同JBossCach这类产品在应用场景上的对比。真是有很多问题,一时想不起来怎么问。您就想那说那吧。
--
比如一个具体问题是,如果把pojo存储在一个TC服务器网格中,相信TC会把该pojo在网格的所有节点中同步。但其是否有一种机制可以使该pojo同它的持久存储(比如数据库)同步?而且最好是对应用层透明? 如果有,TC能否保证pojo在TC中的更新和同数据库的同步是事务性的 ?
--
感觉引入terracotta会对系统架构产生重大影响。基于jvm的cluster、纯pojo的缓冲、这样我们可以用廉价的linux box堆积出一个jvm网格... terracotta给我们描述的场景很诱人,您怎么看 ?
14 楼
ljxml
2008-08-15
Yeah 本身提供一个静态方法
RegistryContext.getOrCreateRegistry();
RegistryContext.getOrCreateRegistry();
13 楼
black_zerg
2008-08-06
搞esb用来干嘛的?要做ibm的项目?
12 楼
江南白衣
2008-08-04
ljxml 写道
请教白衣 以前使用UMOContainerContext.getComponent(String) 现在使用那个方法 读取spring context中配置的bena
感觉Mule2.0文档完善的地方还不少
感觉Mule2.0文档完善的地方还不少
现在需要先拿到Registry,再从里面拿Bean,我也不知道自己的做法是不是最正规的,没文档啊.....
11 楼
ljxml
2008-08-04
请教白衣 以前使用UMOContainerContext.getComponent(String) 现在使用那个方法 读取spring context中配置的bena
感觉Mule2.0文档完善的地方还不少
感觉Mule2.0文档完善的地方还不少
10 楼
fuyuzsl
2008-08-01
mule 2 中muleMessage 的addAttachement() 使用http 做transport 到transformer 那里总是ContentLengthInputStream ,假若,现在attachement是一个DataHandler,不知道为什么总是到transformer那里就没有datahandler,请指教!
9 楼
fuyuzsl
2008-07-22
如果可以能不能给个例子,谢谢
邮箱地址是zsljxq@163.com
邮箱地址是zsljxq@163.com
8 楼
fuyuzsl
2008-07-22
使用mule 2 中的MuleClient 的send 或者dispathch方法使用传输muleMessage
使用的transport是http ,可是设置message的payload为file,在transformer那里却无法获得该文件
使用的transport是http ,可是设置message的payload为file,在transformer那里却无法获得该文件
7 楼
fuyuzsl
2008-07-22
请问一下mule 2中如果在使用http接入的话,我的http页面中包含有上传的一个文件
使用mule2 的transformer 怎么能获得上传的文件!
使用mule2 的transformer 怎么能获得上传的文件!
6 楼
江南白衣
2008-07-09
mule也快osgi了。2.1版就是,在svn分支里已经可以看到相关代码。
5 楼
melin
2008-07-09
我是因为ServiceMix基于osgi的微内核,才喜欢的。
4 楼
江南白衣
2008-07-09
没有用过ServiceMix,不过因为ServiceMix头上JBI的头衔而不大喜欢。
3 楼
melin
2008-07-07
lz能评价一下ServiceMix和mule?
2 楼
HenryYu
2008-07-07
最近也在开发ESB产品,主要是解决企业各个系统之间点对点的紧耦合,通信阻塞等问题。对Mule的机制一下研究,吸收了不少东西。
1 楼
fujohnwang
2008-07-04
引用
这说明了,开源项目的质量,最终是靠一个积极使用和反馈的用户群和一个活跃的开发团队,"用"出来的。
开源项目需要商业团队的“进一步”打造才能为客户创造价值,呵呵
发表评论
-
Software Craftsmanship可以做些什麼?
2012-01-15 22:23 1906週末都在學習"軟件匠藝",去那些出書的,開 ... -
SSO中的Pattern
2009-05-29 23:49 3058SSO方案中太多平行对称的分支选择,就像博而赫斯那小 ... -
ESB笔记2009
2009-04-05 01:08 5447又过一年了,更新一次自己的ESB笔记,内容实在,枯燥无味 ... -
要不要就一起升级JDK6.0?
2009-03-19 10:22 6930背景音乐:《要不要就一起加入G C D》,唱:陈珊妮 ... -
架构师09年书单
2009-03-18 16:22 10877年又过年,去年在 ... -
一个Java架构师的新年期望
2009-01-24 16:17 10828年末最后一天,昭事上帝 ,聿怀多福,祈望来年的Java社 ... -
一次Java垃圾收集调优实战
2008-07-09 10:39 87591 资料 JDK5.0垃圾收集 ... -
Terracotta,POJO开发模型的最后一块拼图
2008-05-29 10:22 3020Terra ... -
08年的读书计划
2008-05-04 16:31 712408已过了一季,马上就要三十的人了,总有些脱不开烟火气 ... -
设计美好的服务器(7)--Apache CXF笔记
2007-12-29 11:52 5620OverView Apache CXF ... -
设计美好的服务器(6)--SEDA架构笔记
2007-12-21 00:33 72081.Overview SEDA Ad ... -
设计美好的服务器(5)--Shoal集群框架
2007-12-20 10:06 4735Overview Shoal Sho ... -
数据服务笔记
2007-10-26 09:07 52341.Overview 数据 ... -
ESB架构笔记
2007-10-09 23:42 19278ESB是什么 ESB综述1:定 ... -
Prototype.js--Javascript编写者的小军刀
2006-08-08 08:37 2259Overview Prototype.js官方文章 ... -
轻的,谁都会写的Service方案--REST与JSON
2007-06-15 11:26 121041.REST 1.1 缘起 N年前,一说到跨平台的服务 ... -
架构师核心技能养成计划
2007-02-18 19:07 8423作者:江南白衣,原文出处: http://blog.csdn ... -
架构师书单
2007-02-10 14:35 169622月份买了过千元的书后,重列了一个2.0 版的架构师书单,请 ... -
Pragmatic Struts
2006-11-17 11:59 19012本文来自SpringSide WIki,请留意Wiki上的最 ...
相关推荐
《深入解析Mule ESB源码》 Mule ESB(Enterprise Service Bus,企业服务总线)是一款开源的集成平台,旨在简化企业级应用之间的数据交互。本文将围绕Mule ESB的源码进行深入探讨,揭示其核心设计理念与工作原理。 ...
根据提供的文件内容,以下是关于Mule ESB手册-中文版的知识点: 1. Mule ESB简介 Mule ESB(Enterprise Service Bus)是MuleSoft公司开发的一款企业服务总线产品,它允许企业内部和不同企业之间的服务进行集成,...
MULE ESB(Mule Enterprise Service Bus)是Anypoint Platform的核心组件,它是一个强大的、全面集成的企业服务总线(ESB),专为构建、部署和管理API和集成解决方案而设计。MULE ESB-4.1是MuleSoft公司推出的企业版...
### ESB原理及Mule ESB实践 #### ESB(Enterprise Service Bus)原理概述 **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的...
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
《Mule ESB详解——构建企业级集成解决方案》 Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统...
**Mule ESB 3.0 中文教程** Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,专为构建可扩展、灵活和可靠的分布式应用程序而设计。Mule ESB 3.0是该平台的一个重要版本,提供了许多...
### MuleESB3.0中文教程知识点梳理 #### 一、Mule ESB 3.0概述 - **定位**:Mule ESB 3.0是一款轻量级的消息框架和整合平台,旨在帮助企业轻松地集成不同的系统和服务。 - **核心特性**:基于EIP(Enterprise ...
Mule ESB,全称Mule Enterprise Service Bus,是一个开源的企业服务总线系统,旨在促进不同应用程序和服务之间的数据交换和集成。Mule的核心设计是基于轻量级的Java平台,尤其是J2EE 1.4标准,使得它能够在各种企业...
《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...
**Mule ESB 开发工具详解** Mule ESB(Enterprise Service Bus,企业服务总线)是一种开源的集成平台,由Mulesoft公司提供,它主要用于构建和管理API及企业内部系统的集成。Mule ESB的核心特性是轻量级、高性能和...
《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的开发者设计。Mule ESB 是一款强大的集成平台,能够连接各种应用程序、数据源和服务,实现企业级的数据...
标题:《Mule ESB 3用户指南》 描述:本手册旨在为用户提供对Mule ESB 3的基础使用指导,强调了Mule ESB作为一个社区成熟且文档丰富的开源企业服务总线(ESB)的使用方法。 知识点说明: 1. Mule ESB概述: Mule ...
**MULE ESB-4.1社区版运行环境详解** MULE ESB(Message Broker Enterprise Service Bus)是一款强大的企业级服务总线,由Mulesoft公司开发,它提供了一个集成平台,用于连接各种应用程序和服务,实现数据的高效...
Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明