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操作,下面分别介绍之!
相关推荐
`security.policy`文件是Java安全策略的配置,用于控制Mule ESB在执行过程中对系统资源的访问权限。通过这个文件,我们可以限制Mule的某些操作,以增强系统的安全性。 `email.properties`可能是一个包含电子邮件...
1. Mule ESB简介 Mule ESB(Enterprise Service Bus)是MuleSoft公司开发的一款企业服务总线产品,它允许企业内部和不同企业之间的服务进行集成,易于连接各种服务和应用。Mule ESB支持多种传输协议、消息格式和数据...
《Mule ESB详解——构建企业级集成解决方案》 Mule ESB,全称为Mule Enterprise Service Bus,是一款强大的开源企业服务总线,用于构建灵活、可扩展的企业级集成解决方案。Mule ESB的核心功能是作为不同应用系统...
Mule ESB 开源框架简介 Mule ESB 是一个基于 Java 的轻量级企业服务总线和集成平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。Mule ESB 支持集成现有系统而无论其底层采用何种技术,如 JMS、...
Mule ESB 是一个轻量级的基于java的企业服务总线和集成平台, 使得开发人员可以快速,简单的连接多个应用, 使得它们可以交换数据。 Mule ESB 容易集成现有异构系统,包括:JMS, Web Services, JDBC, HTTP, 等. ESB...
1. **工作流与流程控制**:介绍如何利用Mule ESB实现复杂的业务流程,如条件分支、循环和并行处理。 2. **安全策略**:探讨如何设置和实施安全策略,保护系统免受攻击。 3. **消息队列与事件驱动**:了解如何利用...
6. 服务器启动后,Mule应用程序将自动加载并运行。 总之,MULE ESB-4.1社区版提供了一个全面的集成平台,帮助开发者快速、轻松地连接和管理各种系统。它的易用性、灵活性和广泛的连接器支持,使其成为企业级集成...
- **生命周期改进**:优化了Mule的启动和关闭过程,支持JSR-250生命周期注解。 - **异常处理**:改进了异常处理机制,增强了异常处理的兼容性。 - **自动转换**:增强了自动转换引擎的功能,支持自定义转换规则,...
1. **企业消息总线和消息代理**:Mule ESB作为一个消息中间件,提供了一个中央通信平台,允许不同的服务和应用通过消息传递进行交互。这种基于J2EE 1.4的标准使得它具有高度的可扩展性和可靠性。 2. **可插入的连接...
《Mule ESB Cookbook随书源码》是一个与Mule ESB相关的实践指南,它包含了大量实例代码,旨在帮助读者深入理解和应用Mule ESB这一开源企业服务总线(Enterprise Service Bus)。Mule ESB是业界广泛采用的ESB解决方案...
5. **部署流程**:将开发的Mule应用解压并放入“apps”目录后,MULE ESB会在启动时自动检测并加载这些应用。通过管理控制台或者命令行工具,可以对应用进行启动、停止、重启等操作。 6. **企业特性**:MULE ESB企业...
Mule ESB(Enterprise Service Bus,企业服务总线)是一款强大的开源集成平台,它帮助企业将不同的系统、应用程序和服务连接在一起,实现数据的高效流转。本教程将带您入门Mule ESB项目,通过实例学习其核心概念和...
### ESB原理及Mule ESB实践 #### ESB(Enterprise Service Bus)原理概述 **ESB**(企业服务总线)是SOA(面向服务架构)架构中的关键组件之一,用于实现服务间的智能集成与管理。其核心作用在于简化不同系统间的...
《Mule ESB 开发手册》是一份详尽的指南,专为希望深入了解并掌握 Mule ESB(Enterprise Service Bus)技术的开发者设计。Mule ESB 是一款强大的集成平台,能够连接各种应用程序、数据源和服务,实现企业级的数据...
1. Mule ESB概述: Mule ESB是一个开源的中间件平台,用于构建企业级的集成应用。它能够让不同系统、服务和设备之间的数据轻松流动,从而实现各种应用程序和数据源之间的无缝通信。Mule ESB通过插件机制支持多种协议...
总结起来,这个压缩包提供的资源对于初学者或者有经验的Mule ESB开发者来说都是非常宝贵的,它涵盖了从安装开发环境到深入理解Mule ESB概念和实践操作的整个过程。随着更多研究成果和样例的发布,这将是一个全面学习...
Mule ESB的核心功能包括数据转换、协议适配、消息路由以及流程管理,旨在简化企业的IT架构并提高效率。本手册将详细探讨Mule ESB的打包过程,帮助开发者理解和实施相关的操作。 1. **Mule ESB概述** Mule ESB是Any...
Mule ESB应用部署 Mule ESB应用的目录结构,配置文件说明