您好,欢迎访问三七文档
当前位置:首页 > 建筑/环境 > 工程监理 > JBoss架构分析以及构架原理
研究项目:JBoss架构分析JennyLiuSchoolofInformationTechnologiesUniversityofSydneyjennyliu@cs.usyd.edu.au熙可集团系统分析员:李剑华翻译English摘要JBoss是一个免费的开放的J2EE实现。它的架构是基于高标准的模块化和插入式设计。JBoss使用工业标准的JMX来管理,JBoss组件和为EJB提供服务。基于我们以前的开发经验,我们发现了不同的J2EE应用服务器间的存在着巨大的性能和可扩展性差异。我们相信架构的设计是决定类似于性能和可扩展性等质量指标的重要因素。分析和展现JBoss架构模型有助于我们了解其内部行为并帮助我们创建一个精确的最终性能模型。在这个项目中,我们分析JBoss应用服务器架构的四个特殊部分,JBossEJB容器、JBossNS、JBossTX以及JBossCMP,逆转工程工具能使我们通过源代码来分解组件/子系统。无论是三个JBoss子系统的概念模型或实际模型都将被我们用来讨论JBoss架构模块设计风格。TableofContent1.介绍1.1JBoss是什么1.2动机1.3方法1.4组织2.JBoss服务器架构一览页码,1/252009-3-9文件使用pdfFactoryPro试用版本创建它是如何工作的?3.架构模型概念3.1容器的概念性架构模型-插入式3.1.1主要的组件和接口3.1.2依赖性3.2JBoss命名服务概念模型3.2.1主要JNDIAPI3.2.2主要组件和接口3.2.3依赖性3.3JBossCMP概念模型3.3.1主要组件和接口3.3.2依赖性3.4JBossTx概念模型3.4.1主要组件和接口3.4.2依赖性4.实际架构模型4.1容器实际模型4.1.1获得综合实际模型的方法页码,2/252009-3-9文件使用pdfFactoryPro试用版本创建拦截器调用'Pipe'5.Figure3-3JBoss命名服务概念模型ServicesConceptualModel6.Figure3-4JBossCMP服务概念模型页码,3/252009-3-9文件使用pdfFactoryPro试用版本创建是什么?JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布。它提供了基本的EJB容器以及EJB(好像应该是J2EE)服务,例如:数据库访问JDBC、交易(JTA/JTS)、消息机制(JTS)、命名机制(JNDI)和管理支持(JMX)。目前的JBoss发布版2.2.4实现了EJB1.1和部分EJB2.0的标准、JMS1.0.1、Servlet2.2、JSP1.1、JMX1.0、JNDI1.0、JDBC1.2和2.0扩充(支持连接池(ConnectionPolling))、JavaMail/JAF、JTA1.0和JAAS1.0标准,JBoss是100%纯Java实现能运行于任何平台。1.2动机这个项目的动机是我们想分析一下中间件基础系统的性能。基于我们以前的开发经验,我们知道不同J2EE应用服务器在性能和可扩展性方面有着极大的差异,并且相信架构的设计是决定类似于性能和可扩展性等质量指标的重要因素,我们想通过分析这个系统来了解架构设计究竟对于性能和可扩展性具有着怎样的影响。无论概念性模型的局限性或实际模型中对于系统运行期行为的Reflect(反射机制)应用,他们还是能提供给我们一个对于整个系统的全面架构的了解的视点和符合基本境况的分析模型的构建的前提。1.3方法论大型软件系统的架构分析可以分为两个层面:概念性架构和实际架构。概念性架构通过将子系统的捆绑式分析和子系统间的分析描述了这个系统的架构。每一个子系统具有清晰的有意义的方法和他们包含了整个系统的特殊的架构风格。实际架构和概念性架构比起来具有较少的层次关系。它表述了实际的编程规划/模型的实际体现,它和想象的概念性架构有很多不同。在这个项目中,我们将JBoss的概念性架构和实际架构进行了分割。想象的概念性架构模型通过参考资料来分割和获得,我们自己的经验来自配置应用系统和JBoss的在线论坛。眼下,我们先关心一下每个组件在模块层面上的功能性,他们彼此不相关。实际架构模型是综合的。我们使用逆转工程工具Together5.5以便于将源代码翻转成为类(class)图和序列(sequence)图并使他们在一个子系统模型中综合。Together5.5支持应用设计,实施,配置和JBoss的逆转工程。它可以通过Java文件和class文件来获得类图。更深一层,我们通过使用Together选择相应的特殊的方法来获得序列图。有两个工具可以帮助我们来了解组件行为,最终实际模型和概念性模型的比较。在实际模型中以外的模块、组件和其它部分也将被讨论。页码,4/252009-3-9文件使用pdfFactoryPro试用版本创建组织这份报告将按照以下次序进行组织:第二部分将介绍JBoss架构的整体设计和主要的组件。第三部分讨论JBoss子系统的概念性模型,即:容器框架和它的插件。JBoss命名服务(JNDI),JBoss容器持久性管理(CMP)和JBoss交易服务。第四部分,我们将挖掘JBoss子系统的实际模型和被提及的组件间的相应稳固的关系。第五部分,我们来评价一下JBoss的架构风格和在性能、可更改性、可扩展性等一系列质量指标上的表现。在第六部分我们将讨论我们将来的工作和提出我们报告的最终结论。2.2.JBoss服务器架构概述JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。JBoss的模块架构是建立在JMX底层上的,下图展现了JBoss主要组件和JMX的联系。Figure1-1OverallJBossConceptualModel2.1JMX-层次JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层(instrumentationlayer)、代理层(agentlayer)和发布层(distributionlayer)。其中,发布层还在等待未来的标准化。简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。.页码,5/252009-3-9文件使用pdfFactoryPro试用版本创建。[2].1.JBossEJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB对象的Stub和Skeleton类,第二是支持热部署。2.JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDIJ2EE规范.3.JBossTX是由JTA/JTS支持的交易管理控制.4.部署服务支持EJB(jar)、Web应用文档(war)和企业级应用文档(ears)的部署。它会时刻关心J2EE应用的URL情况,一旦它们被改变或出现的时候将自动部署。5.JBossMQ使Java消息规范(JMS)的实现。6.JBossSX支持基于JAAS的或不支持JAAS机制的安全实现。7.JBossCX实现了部分JCA的功能。JCA制订了J2EE应用组件如何访问基于连接的资源。8.Web服务器支持Web容器和Servlet引擎。JBoss2.4.x版本支持Tomcat4.0.1,Tomcat3.23和Jetty3.x服务.2.3他们是如何工作的?当JBoss被启动,它的第一步是创建一个MBean服务器的实例。一个基于管理机制的MBean组件通过在MeanServer中的注册而被插入JBoss中。JBoss实现了动态类装载M-Let服务,它是代理服务,M-let允许MBean被注册到MBean服务器上。通过基于文本文件的配置文件中的配置,相应MBean将被装载。JMXMBean服务器实际上本身并没有实现很多功能。它的工作类似于一个MBean中联系的微核聚合组件,通过Mbeans取代JMXMBean服务起来提供相应的功能,换而言之,真正起作用的是MBean。JBoss的整体架构并不是依循Garlan和Shaw文件中的架构风格严格分类的,代替它的是一个组件插入式的框架。MBean的接口是一个连接器。在这封报告的余下部分,我们选择了JBoss架构中的JBossEJB容器、JBossNS、JBossTX和JBossCMP子系统来加以学习。虽然JBossCMP,实体Bean的容器管理持久层是容器架构的一部分,但我们还是将它分开讨论,因为他们有自己的构架。我们只在这个项目中介绍三个部分是因为它们是我们关心的JBoss应用服务器的性能问题的关键点。在这个项目中我们使用的方法学可以扩展到更多有用的子系统的学习中去。3.概念架构模型页码,6/252009-3-9文件使用pdfFactoryPro试用版本创建服务器的核心实现。图3-1展示了EJB容器的概念性模型。我们发现JBoss容器的架构并不是一个严格意义上的层,决大多数的独立件是双向管理,容器依赖于更多的低层次组件。实
本文标题:JBoss架构分析以及构架原理
链接地址:https://www.777doc.com/doc-4647634 .html