Mule ESB浅析6——启动流程1



 mule主要是通过mule_config.xml配置进行流程的编排,因此启动过程主要是配置的导入,以及相应资源的初始化操作。

关于配置的导入,如果是独立部署的方式,则需要在启动代码中手动调用**ConfigurationBuilder类传入配置文件进行配置的导入。如果是嵌入到web容器中,则在web.xml中配置好后,会进行自动加载。

 

整个mule 实例的核心管理结构为muleContext,整个初始化过程也就围绕该实例资源的初始化。


<!--[endif]--><!--[if gte mso 9]><xml> <o:OLEObject Type="Embed" ProgID="Visio.Drawing.11" ShapeID="_x0000_i1025" DrawAspect="Content" ObjectID="_1421329717"> </o:OLEObject> </xml><![endif]-->

 

其中在buildMuleContext阶段,

<!--[if !supportLists]--> 1)<!--[endif]-->初始化muleContext需要的资源,包括configuration,lifecycle manager,work manager,work listener,server notification manager,registrybroker等。

<!--[if !supportLists]-->2)  <!--[endif]-->对创建好的context进行配置,独立部署时,直接通过config接口传入配置文件的方式进行导入;嵌入到tomcat能web容器部署时,通过web.xml的配置文件进行加载。

3)调用refresh操作,这里refresh操作为spring框架实现,用于启动IOC容器的初始化。这里启动创建所有实例都会放到Registry容器中统一管理。

 此处 registry是所有实例的容器,具体类图如下:

 

Mule在context中通过registry broker来维护spring registry,transient registry,guice registry。

 

spring registry的功能是维护通过spring注入的所有实例;

 

transient registry的功能是维护默认的处理函数链表_muleContextProcessor_muleExpressionEvaluatorProcessor_muleExpressionEnricherProcessor_muleLifecycleStateInjectorProcessor_muleLifecycleManager

 

还有mule配置注入的connector,endpoint等对象,对象在创建时会主动注册其监听的事件。

 

guice registry维护通过guice框架注入的对象。

 

mule访问registry中具体对象的流程为:

 

muleContext->muleRegistry(muleRegistryHelper)-->DefaultRegistryBroker-->registry array--> registry --> object。

 

目前在spring启动的方式下,就包括了spring 和transient 两个registry。

 

 

4)在refresh之后,调用firelifecycle,进入RegistryLifecycleManager,对启动阶段的模块调用start进行初始化操作。

 

调用contextstart方法,

 

a)通过notification的通知机制,触发所有监听状态的处于CONTEXT_STARTING阶段的实例。

 

b)调用fireLifeCycle方法,触发制定对象的start操作,主要是对mule-config.xml中配置的flowendpoint等进行start,总入口为RegistryLifecycleManagerinvokePhase方法。之后分别调用各个模块实例的start方法。

 

具体的加载流程如下图所示,最终会启动transactionQueueManagerconnectoragentmodelflowConstructstartable对象的所有实例(调用对应的start函数实现)。

 

 

至此,mule启动完毕,在各个connector上等待接收数据。针对每一个启动的实例,都有的单独的处理线程。

针对具体实例的start操作,下面分别介绍之!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值