天天看點

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架構設計中的兩個重要的特性

繼續閱讀