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进行初始化操作。
调用context的start方法,
a)通过notification的通知机制,触发所有监听状态的处于CONTEXT_STARTING阶段的实例。
b)调用fireLifeCycle方法,触发制定对象的start操作,主要是对mule-config.xml中配置的flow,endpoint等进行start,总入口为RegistryLifecycleManager的invokePhase方法。之后分别调用各个模块实例的start方法。
具体的加载流程如下图所示,最终会启动transactionQueueManager,connector,agent,model,flowConstruct,startable对象的所有实例(调用对应的start函数实现)。
至此,mule启动完毕,在各个connector上等待接收数据。针对每一个启动的实例,都有的单独的处理线程。
针对具体实例的start操作,下面分别介绍之!
相关推荐
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
文档主要介绍了Mule ESB的使用方法,并结合具体实例加深对ESB的理解,对新手很有帮助哦!
Mule ESB 项目在Linux中的部署与开发与应用案例
Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明
ESB原理及Mule ESB实践
mule,mule esb,Mule,ESB
MuleESB3.0 属于轻量级的消息框架和整合平台,mule云
MuleESB集成webservice+restful(sprintboot+mybatis+mysql)+activeMQ+javamail,五天的研究成果,集成了我所关注的点,希望有更多的朋友一起学习进步。
mule esb 项目 例子 入门
mule esb开发手册
mule esb mule esb 开发工具
MuleEsb开源框架简介.pdf
mule esb mule esb打包手册文档
企业服务总线(Mule ESB)的研究与实现
mule esb 的 简单介绍, 以及一些主要特性的介绍
MuleESB_3.0_中文教程
mule esb 3 user guider: 社区成熟,文档丰富的开源esb mule用户手册
Mule ESB实际开发例子,适合初学者。
MULE ESB是开源企业服务总线中用户数量最多,文档最丰富,堪称经典。