学习mule loanbroker

来源:互联网 发布:mac中文输入法不显示 编辑:程序博客网 时间:2024/05/29 09:48

学习mule loanbroker的范例,大致明白了处理的流程。

Ross Mason  在  JavaZone 2005 的PPT《Implementing an ESB using Mule A Real World Example》 专门讲了 loanbroker例子。对理解loanbroker的运转过程有帮助。

 

http://alloyer.javaeye.com/blog/334883介绍了mule的整体内容。

 

Mule和其ESB的模型提供了非常可观的组件重用。不同于其他框架,Mule可以让你不加修改地使用你现有的组件。这些组件不需要任何与Mule相关的代码,甚至编程接口(API)也不需要,就可以在Mule上运行。这样,业务逻辑和消息逻辑完全分离开来。这一点很重要。开发过程中,写业务逻辑的人可以不懂mule和ESB。

 

入站路由(inbound router)由指定了一个服务组件要处理哪些消息,它可以过滤进入的消息,聚合消息,以及在将消息发送到服务组件前对它们进行重新排序。例如,如果一个服务服务订阅了一个RSS,入站路由就必须要知道来自那个提供者的消息。(服务组件是通用,可以对进入服务组件的消息进行预处理。包括:查错,信息整理。)这样做,可以增加进入消息的灵活性。

 

出站路由(outbound router)由指定向哪里发送这条消息。(服务组件是通用,可以对服务组件输出的消息进行预处理。包括:信息整理。以满足下个组件的需要。)

 

可以定义多个入站和出站路由约束,甚至将多个路由链接起来处理消息,来保证服务组件准确地按照要求来接收和发送消息。

服务组件被完全与消息格式隔离了开来。所有的对消息的传输,转换以及路由对服务组件来都是完全透明的。数据仅在需要的时候才会转换

 

端点(endpoint)是连接起所有服务的关键,它是一个配置元素。你可以在入站路由和出站路由中指定端点,来告诉Mule使用哪个传输组件,将消息发送到哪里,以及哪一个消息组件应该接收它。端点的主要部分是地址(address),它是使用统一资源标识符(URI)描述的,它指定了需要使用的传输组件,传输组件资源的定位和一些附加的参数。

 

但很多细节,还没有理解。需要逐步细化。

学习步骤:

1 写一个读用文件中读userID和password的程序。在本地读。目的是熟悉初步的程序。

    最后研究了总发生下面错误。

ERROR 2010-05-11 16:15:51,796 [FindPasswordUMO.2] org.mule.service.DefaultServiceExceptionStrategy:
********************************************************************************
Message               : Failed to invoke org.mule.component.DefaultJavaComponent component for: SedaService{FindPasswordUMO}. Component that caused exception is: SedaService{FindPasswordUMO}. Message payload is of type: User
Type                  : org.mule.api.service.ServiceException
Code                  : MULE_ERROR--2
JavaDoc               : http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/service/ServiceException.html
Payload               : com.lug.mule01.User@1a0d866
********************************************************************************
Exception stack is:
1. could not find constructor with matching arg params:  (java.lang.NoSuchMethodException)
  org.mule.util.ClassUtils:372 (http://java.sun.com/j2se/1.5.0/docs/api/java/lang/NoSuchMethodException.html)
2. Failed to invoke org.mule.component.DefaultJavaComponent component for: SedaService{FindPasswordUMO}. Component that caused exception is: SedaService{FindPasswordUMO}. Message payload is of type: User (org.mule.api.service.ServiceException)
  org.mule.component.AbstractComponent:152 (http://www.mulesource.org/docs/site/current2/apidocs/org/mule/api/service/ServiceException.html)
********************************************************************************
Root Exception stack trace:
java.lang.NoSuchMethodException: could not find constructor with matching arg params:

 

最后发现,在hello范例中ChitChatter.java的构造器是public。而不是通常的空。仿照范例,错误没有了。

一定注意mule调用的组件,构造器必须是public.

 

尝试使用http方式访问自己写的范例。最后成功了。

研究使用muleclient,没有成功。

 

2 从另外一个计算机内用读出。熟悉异步读取。

3 从多个计算机内读出。熟悉多个计算机联合运行。

 

因此,再学习最初的例子。hello的范例。

transformers  

原创粉丝点击