您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 会议纪要 > 基于JMX的MuleESB管理控制台
计算机时代2012年第3期0引言随着信息化技术的快速发展、企业规模的不断扩大,企业应用系统在逐渐增多,同时复杂性也在不断增加。由于种种原因,如这些系统可能由不同的软件厂商开发实施,各系统只关注各自领域内的数据与业务处理,因此相互之间无法进行信息共享和业务集成,形成了许多“信息孤岛”,为此,很多企业迫切需要一种集成方法,以将各种旧的应用系统和新的应用系统集成起来。面向服务架构(Service-OrientedArchitecture,SOA)继承和发展了传统体系结构,它能够混合搭配多种执行环境、使服务接口和执行技术分离,从而使得IT部门可以为各项工作选择最佳的执行环境,并采用一致的架构将它们结合在一起[1]。SOA架构的驱动力是集成、复用与协同。它可以使用户不受限制地重复使用软件,把各种资源互连起来。只要IT人员选用标准接口包装旧的应用程序,把新的应用程序构建成服务,那么其他应用系统就可以很方便地使用这些功能服务[2]。为了更有效地管理和重用系统服务,企业服务总线(EnterpriseServiceBus,ESB)被引入到SOA实践中。企业服务总线在SOA中充当服务间智能化的集成与管理中介[3],是基于面向服务架构的基础设施,是传统中间件技术与XML、Web服务等技术结合的产物。第三方的程序组件能够以标准的方式“插入”到企业服务总线上运行,参与应用集成的各方并不直接交互(请求者无须了解服务提供者的物理实现),而由总线负责将请求交付给提供所需功能和QoS的服务提供者。这样,服务请求者和服务提供者的应用程序逻辑就可以使用各种编程模型和技术调用或交付服务,而无需考虑是直接连接还是通过企业服务总线传递的[4,5]。Mule()是企业服务总线的一个最优秀的开源实现之一。它是一个以Java为核心的轻量级的消息框架和整合平台,允许开发人员快速便利地连接多个应用,并支持应用间的数据交换。它支持集成现有系统而无论其底层采用何种技术,如JMS、WebServices、JDBC、HTTP以及其他技术。Mule通过Transports/Connectors与外围的异构系统连接,提供Routing(路由)、TransactionManagement(事务管理)、Transfor-mation(转换)、MessageBroker(消息代理)、TransportationManagement(传输管理)、Security(安全)等核心模块。外围系统的服务请求通过MuleESB的Transport接入,MuleESB通过Transformer进行数据的格式转换,然后经过InboundRouter进行消息过滤(内部通过配置filter实现)后交给Mule的Com-ponent等进行业务逻辑处理。处理后的结果通过OutboundRouter确定传递给哪个接收方,然后通过Transformer进行数据格式转换,再通过Transport连接至接收方。MuleESB可以单基于JMX的MuleESB管理控制台陈聪,俞东进(杭州电子科技大学计算机学院,浙江杭州310018)摘要:给出了一个符合JMX规范的MuleESB管理控制台的设计和实现方案。借助了该控制台可以远程管理MuleESB,查看MuleESB服务器信息、MuleESB及其服务的运行时状态和运行日志,也可以远程调用部署在MuleESB上的服务方法。该控制台弥补了MuleESB不提供远程管理的开源实现的不足。实验证实,该控制台运行稳定可靠。关键词:企业服务总线;远程管理;Java管理扩展;控制台中图分类号:TP311文献标志码:A文章编号:1006-8228(2012)03-25-03MuleESBconsolebasedonJMXChenCong,YuDongjin(SchoolofComputer,HangzhouDianziUniversity,Hangzhou,Zhejiang310018,China)Abstract:EnterpriseServiceBus(ESB)inservice-orientedarchitectureactsasintelligentintegrationandmanagementagencybetweenservices.MuleESBisafamousopensourceimplementationofESB.ItisalightweightmessagingandintegrationplatformimplementedinJava.TheauthorspresentsinthisarticlethedesignandimplementationofaJMX-compliantMuleESBmanagementconsole.TheconsolecouldremotelymanagetheMuleESBserveranddisplayserverinformationaboutMuleESBdeploymentsanditsrun-timestatus.ItcouldcallremotelyMuleESBanditsservices.TheconsolecouldovercomethedeficiencyofopensourceimplementationofMuleESB.Itrunssteadilyastheexperimentshows.Keywords:EnterpriseServiceBus;remotemanagement;JavaManagementExtensions(JMX);console收稿日期:2011-12-30作者简介:陈聪(1989-),男,浙江省建德市人,主要研究方向:软件工程,WEB技术。··25ComputerEraNo.32012独使用,也可以架设在常用的应用服务器上。企业一旦在生产环境中部署了MuleESB,那么对于MuleESB和相关服务的管理和监控就变得至关重要。随着越来越多的应用、服务部署在MuleESB上,系统的复杂度会不断提高,因此企业对于监控系统性能和控制系统的需求也随之而来。ESB的管理控制台,就是一款能提供一个非常方便的界面来帮助用户管理和监控ESB以及相关的各种服务的软件。然而令人非常遗憾的是,MuleESB没有提供相应免费的管理控制台软件。Java扩展管理(JavaManagementExtensions,JMX)是由Sun公司提出的、面向应用程序、设备和系统的集成化管理框架[6]。MuleESB内嵌了对JMX的支持,因此利用JMXAPI可以方便地对MuleESB进行远程监控。对于利用JMX实现分布式系统的实时监控已有不少的研究。例如,HaihuaJiang等人[7],以及AbdelkaderLahmadi等人[8]都提出了采用JMX架构实时监控分布式应用系统性能的方法。本文给出了基于JMX的MuleESB管理控制台的设计和实现方案,实验证明该方案是合理和可行的。1管理控制台架构设计本文开发的企业服务总线控制台针对MuleESB开发。由于MuleESB已经实现了JMX内核架构,因此我们只需要部署一个JMX代理应用到MuleESB的项目中,就可以通过开发JMX代理客户端来监控和控制MuleESB的某些行为。另外,为了可以在管理控制台方便地查阅MuleESB的日志信息,需要改写MuleESB的日志行为,并将其运行日志存储到指定的数据库中。根据MVC分层思想,管理控制台分为视图层、控制层和模型层三层。其中,视图层是展示和操作的用户接口;控制层负责信息的转发;模型层可以进一步分为两部分:第一部分是JMX代理客户端模型,该模型通过远程调用MuleESB的JMX内核实现,用以规格化JMX的MBean,第二部分通过访问数据库获得MuleESB的日志信息。管理控制台的体系结构如图1所示。图1管理控制台分层结构⑴视图层:整个页面框架使用EXTJS富客户端框架技术搭建,所有的页面内容都通过异步的方式加载。⑵控制层:使用Apache的Struts2技术将请求映射根据业务的需求分类。该层是视图和模型的适配中介,可将模型与具体的业务结合起来。⑶模型层:可以分为数据库模型和JMX代理客户端模型两大类。●数据库模型:主要负责从日志数据库获取数据,使用Mybatis3来实现对数据库的操作。●JMX代理客户端模型:提供了对MuleESB服务实时信息的获取和对MuleESB服务操作的调用功能。2JMX代理客户端设计JMX代理客户端模型如图2所示。图2JMX代理客户端模型其中,ProxyClient用于连接并与MuleESB交互。ProxyFactory用于创建ProxyClient对象,并维护该对象的单例。ServiceContext为规格化后可对MuleESB进行重启和关闭操作的上下文对象。Service则是规格化的MuleESB服务,具体的Service,如Connector、Configuration、Context等,可根据是否带操作规格化为BeanModel和OperationalBean两类,其中OperationalBean是BeanModel的扩展。BeanModel中可以实时获取MuleESB对应模块的状态数据,而OperationalBean在获取状态数据的同时还能调用Mule的部分操作,用以控制Mule的行为。为了加快客户端的响应速度,可对MuleESB的CPU、内存使用率等预先进行缓存处理,即根据配置的刷新频率和缓存的列表长度,定时向MuleESB请求数据,并刷新缓存列表。相应的实现步骤为:⑴读取配置文件,即读取配置的MuleESB的代理地址,拦截信息及缓存信息等。这些内容由统一的工厂类PropertiesFactory加载,并保持单例。⑵ProxyClient根据代理地址连接到Mule,并创建缓存,其中ProxyClient由ProxyFactory来统一创建和维护。代码如下。publicstaticProxyClientgetProxyClient(){initProxyClient();connect();returnPC;}其中initProxyClient方法保证了其对象的单例,即只有在对象未实例化时才会进行实例化,否则直接返回已实例化的对象。而connect方法则只有在连接已经中断的情况下才会重新发起连接,否则只刷新数据。⑶访问时,系统动态地创建ServiceContext或者Service,通过ServiceContext提供的方法或者Service创建的模型来和Mule进行交互。ServiceContext为整个MuleESB的上下文,目前只提供了重启(restart)和关闭(close)两个方法。Service则提供了一组模··26计算机时代2012年第3期型化的服务模块接口,可以通过这些接口来获取每个服务的各个子模块,代码如下。publicStringgetServieName();publicBeanModelgetConfiguration();publicListOperationalBeangetConnectors();publicListOperationalBeangetEndpoints();publicListOperationalBeangetFlows();publicListOperationalBeangetModels();publicOperationalBeangetContext();publicListOperationalBeangetStatistics();publicOperationalBeangetWapperManager();所有的模块分为带操作的模块和不带操作的模块。不带操作的模块,只提供了所有属性名和实时属性的值的获取功能。其接口定义见如下代码。publicinterfaceBeanModel{publicStringgetBeanName();publicListString
本文标题:基于JMX的MuleESB管理控制台
链接地址:https://www.777doc.com/doc-6039817 .html