天天看点

JBoss2

​​JBoss​​​是一个​​开源​​​的符合​​J2EE​​​规范的应用服务器,作为J2EE规范的补充,Jboss中引入了​​AOP​​​​框架​​​,为普通Java​​类​​​提供了J2EE服务,而无需遵循​​EJB​​规范。Jboss通过类载入时,使用Javassist对字节码操作实现动态AOP框架,Javassist是一个开源的编辑字节码的类库。

      Jboss中参考,切入点与方面也由普通Java​​对象​​​实现,并使用​​XML​​​​文件​​​配置。Jboss的连接点模型与​​AspectJ​​​略 有不同,提供了一系列预定义的切入点,包括类匹配,方法调用,构造器调用,域访问,特定的调用与被调用关系。通过这些切入点的逻辑运算,可以实现更为复杂 的切入点。方面为Java类,参考是其中的一个方法,方面中不含切入点,方面主要为各种拦截器(Interceptor),拦截器即为只含一个参考的方 面,单一连接点上可由多个拦截器形成拦截器链,拦截器执行额外的操作。对方法的拦截由Advisor类管理,在连接点依次调用拦截器,并最终调用被逻辑的 方法。而关于切入点,参考已及方面的信息由AspectManager管理。此外,Jboss提供对​​元数据​​的支持,用于为类,方法,构造器以及域添加额外的属性,并可在运行期访问。

      为实现拦截,Jboss需要修改类的字节码,大致过程如下。

      XML配置文件中关于切入点,拦截器,元数据以及混合类的信息在应用​​程序​​部 署时被读入、解析,并生成相应的对象,这些信息与实例化的对象由AspectManager管理。在需要混入方面代码的类载入时, AspectManager将创建Advisor类,将方面相关信息传递给它,并对类的字节码进行修改,之后将修改过的字节码交给类载入器完成类的装载。 字节码的修改主要是对被载入的类添加一系列方法用于代理那些匹配连接点的方法调用,构造器调用,域访问以及方法导入,转为对Advisor类相应方法的调 用。类中各方法将重命名,保留原方法体,并添加一个与原方法同名的方法,在这个方法中调用那些代理方法,用来将调用代理给Advisor类,或调用重命名 的原方法。对于域访问,分别添加两个方法,对应于读与写操作,将域访问代理至Advisor类,在访问这个域的类中,则需将对域的访问转换为对上述方法的 调用。对于构造器调用,则添加一个方法,将调用代理至Advisor类,并对构造对象的类的构造代码作相应转换。对于导入,被导入的类中将添加一个混合类 实现的引用,并添加混合类接口中的方法,将对混合类方法的调用代理至Advisor类,并最终调用混合类的实现。相关类载入后,初始化Advisor类, 填入拦截器链,以完成整个处理过程。

一、JBoss简介

     近年来,在​​J2EE应用服务器​​​领域,JBoss是发展最为迅速的应用服务器。JBoss是免费的,开放源代码J2EE的实现,它通过LGPL许可证进行发布,这使得JBoss广为流行。Boss是一个运行EJB的J2EE应用服务器,例如:​​数据库​​​访问​​JDBC​​​、交易(JTA/JTS)、​​消息​​​机制(JTS)、命名机制(JNDI)和管理支持(​​JMX​​​)。它是开放源代码的项目,遵循最新的J2EE规范。目前的JBoss发布版2.2.4实现了EJB 1.1和部分EJB 2.0的标准、​​JMS​​​ 1.0.1、​​Servlet​​ 2.2、JSP 1.1、JMX 1.0、JNDI 1.0、JDBC 1.2和2.0扩充(支持连接池 (Connection Polling))、JavaMail/JAF、JTA 1.0和JAAS1.0标准,JBoss是100%纯Java实现能运行于任何平台。

     从JBoss项目开始至今,它已经从一个EJB容器发展成为一个基于的J2EE的一个web ​​操作系统​​​(​​operating system​​ for web),它体现了J2EE规范中最新的技术,并且它还在the JavaWorld Editors' Choice 2002评选中获得“最佳Java应用服务器”大奖。无论是学习还是应用,JBoss为我们提供了一个非常优秀的平台。

     另外,JBoss应用服务器还具有许多优秀的特质:

它将具有革命性的JMX微内核服务作为其总线结构;

它本身就是​​​面向服务的架构​​​(Service-Oriented ​​Architecture​​​,​​SOA​​​);

它还具有统一的类装载器,从而能够实现应用的热部署和热卸载能力。

     因此,它是高度模块化的和松耦合的。JBoss用户的积极反馈告诉我们,JBoss应用服务器是健壮的、高质量的,而且还具有良好的性能。

二、JBoss的发展

     为满足企业级市场日益增长的​​需求​​,JBoss 公司从2003年开始就推出了24*7、专业级产品支持服务。同时,为拓展JBoss的企业级市场, JBoss公司还签订了许多渠道合作伙伴。在2004年6月,JBoss公司宣布,JBoss应用服务器通过了Sun公司的J2EE认证。 这是JBoss应用服务器发展史上至今为止最重要的里程碑。与此同时,JBoss一直在紧跟最新的J2EE规范, 而且在某些技术领域引领J2EE规范的开发。因此,无论在商业领域,还是在开源社区, JBoss成为了第一个通过J2EE 1.4认证的主流应用服务器。现在,JBoss应用服务器已经真正发展成具有企业强度(即,支持关键级任务的应用)的应用服务器。

     近年来,Hibernate已经成为了事实上的持久化引擎。JBoss公司致力于将自身发展成为开源项目的社区,最新版的JBoss应用服务器已经将 Hibernate集成为JMXMBean服务。这使得用户能够在应用服务器环境中直接使用Hibernate,而不管它是否处于J2EE上下文中。在最 新版的JBoss应用服务器中,用户能够直接通过JMXMBean服务访问到JBossCache提供的服务。下一代的JBoss应用服务器(暂定名为, JBoss5.0)将提供大量的新功能。除了支持最新的EJB 3.0规范外,新版的JBoss AOP将同它正式发布。同时,JBoss开发​​团队​​还计划开发新的微内核层,即独立于JMX,使得它能够独立使用。

三、JBoss的服务器​​架构​​概述

     JBoss的构架和其他J2EE应用服务器的构架有着巨大的不同。JBoss的模块架构是建立在JMX底层上的,下图展现了JBoss主要​​组件​​和JMX的联系。

     JMX - 层次

    JMX是一个可复用框架,它为远程(Remote)和本地(Local)管理工具扩展了应用。它的架构是层式架构。他们是实现层 (instrumentation layer)、代理层(agent layer)和发布层(distribution layer)。其中,发布层还在等待未来的标准化。简要的表述是,用户使用管理Bean,MBean来提供获得相应资源的实现方法。实现层实现相关的特性 资源并将它发布于JMX相关应用中,它的代理层控制和发布相应的注册在MBeanServer代理上的管理资源。

     JBoss主要模块

    主要的JBoss模块是在MeanServer上的可管理MBean。

    1.JBoss EJB容器是JBoss服务器的核心实现。它有两个特性,第一是在运行期产生EJB 对象的Stub和Skeleton类,第二是支持热部署。

    2.JBossNS是JBoss命名服务用来定位对象和资源。它实现了JNDI J2EE规范.

    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引擎。JBoss 2.4.x版本支持Tomcat 4.0.1,Tomcat 3.23和Jetty 3.x服务.

四、JBoss架构设计中的两个重要的特性

继续阅读