JBoss簡介告訴我們JBoss是什么
有人問了JBoss是什么?JBoss是web服務(wù)器的一種,主要做EJB容器,和tomcat集成就可以jsp,servlet,ejb通吃了JBoss有兩種版本,一種是獨(dú)立的,一種是和tomcat集成的,當(dāng)然都是免費(fèi)的啦EJB(enterprise javabean),他不是javabean簡單的升級(jí),而是一些提供分布式訪問的類包括實(shí)體bean,會(huì)話bean,消息驅(qū)動(dòng)bean
JBoss是一個(gè)運(yùn)行EJB的J2EE應(yīng)用服務(wù)器。它是開放源代碼的項(xiàng)目,遵循最新的J2EE規(guī)范。從JBoss項(xiàng)目開始至今,它已經(jīng)從一個(gè)EJB容器發(fā)展成為一個(gè)基于的J2EE的一個(gè)web 操作系統(tǒng)(operating system for web),它體現(xiàn)了J2EE規(guī)范中最新的技術(shù),并且它還在the JavaWorld Editors' Choice 2002評(píng)選中獲得“最佳Java應(yīng)用服務(wù)器”大獎(jiǎng)。無論是學(xué)習(xí)還是應(yīng)用,JBoss為我們提供了一個(gè)非常優(yōu)秀的平臺(tái)。
剛開始使用JBoss進(jìn)行EJB開發(fā)時(shí),由于可供參考的資源不是很多,所以有一個(gè)比較困難的起步階段。JBoss的配置和使用沒有提供圖形向?qū)Ы缑?,所以開發(fā)部署EJB相對(duì)比較復(fù)雜。本文通過盡量具體的演示來對(duì)JBoss3.0下的EJB開發(fā)和部署的進(jìn)行一個(gè)簡單的介紹,從而使剛開始使用JBoss的用戶可以很快地進(jìn)入到真正的J2EE應(yīng)用開發(fā)中。
Enterprise JavaBean (EJB)規(guī)范定義了開發(fā)和部署基于事務(wù)性、分布式對(duì)象應(yīng)用程序的服務(wù)器端軟件組件的體系結(jié)構(gòu)。企業(yè)組織可以構(gòu)建它們自己的組件,或從第三方供應(yīng)商購買組件。這些服務(wù)器端組件稱作 Enterprise Bean,它們是 Enterprise JavaBean 容器中駐留的分布式對(duì)象,為分布在網(wǎng)絡(luò)中的客戶機(jī)提供遠(yuǎn)程服務(wù)。
JBoss是一個(gè)開源的符合J2EE規(guī)范的應(yīng)用服務(wù)器,作為J2EE規(guī)范的補(bǔ)充,JBoss中引入了AOP框架,為普通Java類提供了J2EE服務(wù),而無需遵循EJB規(guī)范。JBoss通過類載入時(shí),使用Javassist對(duì)字節(jié)碼操作實(shí)現(xiàn)動(dòng)態(tài)AOP框架,Javassist是一個(gè)開源的編輯字節(jié)碼的類庫。
JBoss中參考,切入點(diǎn)與方面也由普通Java對(duì)象實(shí)現(xiàn),并使用XML文件配置。JBoss的連接點(diǎn)模型與AspectJ略有不同,提供了一系列預(yù)定義的切入點(diǎn),包括類匹配,方法調(diào)用,構(gòu)造器調(diào)用,域訪問,特定的調(diào)用與被調(diào)用關(guān)系。通過這些切入點(diǎn)的邏輯運(yùn)算,可以實(shí)現(xiàn)更為復(fù)雜的切入點(diǎn)。方面為Java 類,參考是其中的一個(gè)方法,方面中不含切入點(diǎn),方面主要為各種攔截器(Interceptor),攔截器即為只含一個(gè)參考的方面,單一連接點(diǎn)上可由多個(gè)攔截器形成攔截器鏈,攔截器執(zhí)行額外的操作。對(duì)方法的攔截由Advisor類管理,在連接點(diǎn)依次調(diào)用攔截器,并最終調(diào)用被邏輯的方法。而關(guān)于切入點(diǎn),參考已及方面的信息由AspectManager管理。此外,JBoss提供對(duì)元數(shù)據(jù)的支持,用于為類,方法,構(gòu)造器以及域添加額外的屬性,并可在運(yùn)行期訪問。
為實(shí)現(xiàn)攔截,JBoss需要修改類的字節(jié)碼,大致過程如下。
XML配置文件中關(guān)于切入點(diǎn),攔截器,元數(shù)據(jù)以及混合類的信息在應(yīng)用程序部署時(shí)被讀入、解析,并生成相應(yīng)的對(duì)象,這些信息與實(shí)例化的對(duì)象由 AspectManager管理。在需要混入方面代碼的類載入時(shí),AspectManager將創(chuàng)建Advisor類,將方面相關(guān)信息傳遞給它,并對(duì)類的字節(jié)碼進(jìn)行修改,之后將修改過的字節(jié)碼交給類載入器完成類的裝載。字節(jié)碼的修改主要是對(duì)被載入的類添加一系列方法用于代理那些匹配連接點(diǎn)的方法調(diào)用,構(gòu)造器調(diào)用,域訪問以及方法導(dǎo)入,轉(zhuǎn)為對(duì)Advisor類相應(yīng)方法的調(diào)用。類中各方法將重命名,保留原方法體,并添加一個(gè)與原方法同名的方法,在這個(gè)方法中調(diào)用那些代理方法,用來將調(diào)用代理給Advisor類,或調(diào)用重命名的原方法。對(duì)于域訪問,分別添加兩個(gè)方法,對(duì)應(yīng)于讀與寫操作,將域訪問代理至 Advisor類,在訪問這個(gè)域的類中,則需將對(duì)域的訪問轉(zhuǎn)換為對(duì)上述方法的調(diào)用。對(duì)于構(gòu)造器調(diào)用,則添加一個(gè)方法,將調(diào)用代理至Advisor類,并對(duì)構(gòu)造對(duì)象的類的構(gòu)造代碼作相應(yīng)轉(zhuǎn)換。對(duì)于導(dǎo)入,被導(dǎo)入的類中將添加一個(gè)混合類實(shí)現(xiàn)的引用,并添加混合類接口中的方法,將對(duì)混合類方法的調(diào)用代理至 Advisor類,并最終調(diào)用混合類的實(shí)現(xiàn)。相關(guān)類載入后,初始化Advisor類,填入攔截器鏈,以完成整個(gè)處理過程。
一、JBoss簡介
JBoss是什么?近年來,在J2EE應(yīng)用服務(wù)器領(lǐng)域,JBoss是發(fā)展最為迅速的應(yīng)用服務(wù)器。JBoss是免費(fèi)的,開放源代碼J2EE的實(shí)現(xiàn),它通過LGPL許可證進(jìn)行發(fā)布,這使得JBoss廣為流行。Boss是一個(gè)運(yùn)行EJB的J2EE應(yīng)用服務(wù)器,例如:數(shù)據(jù)庫訪問JDBC、交易(JTA/JTS)、消息機(jī)制 (JTS)、命名機(jī)制(JNDI)和管理支持(JMX)。它是開放源代碼的項(xiàng)目,遵循最新的J2EE規(guī)范。目前的JBoss發(fā)布版2.2.4實(shí)現(xiàn)了EJB 1.1和部分EJB 2.0的標(biāo)準(zhǔn)、JMS 1.0.1、Servlet 2.2、JSP 1.1、JMX 1.0、JNDI 1.0、JDBC 1.2和2.0擴(kuò)充(支持連接池 (Connection Polling))、JavaMail/JAF、JTA 1.0和JAAS1.0標(biāo)準(zhǔn),JBoss是100%純Java實(shí)現(xiàn)能運(yùn)行于任何平臺(tái)。
從JBoss項(xiàng)目開始至今,它已經(jīng)從一個(gè)EJB容器發(fā)展成為一個(gè)基于的J2EE的一個(gè)web 操作系統(tǒng)(operating system for web),它體現(xiàn)了J2EE規(guī)范中最新的技術(shù),并且它還在the JavaWorld Editors' Choice 2002評(píng)選中獲得“最佳Java應(yīng)用服務(wù)器”大獎(jiǎng)。無論是學(xué)習(xí)還是應(yīng)用,JBoss為我們提供了一個(gè)非常優(yōu)秀的平臺(tái)。
另外,JBoss應(yīng)用服務(wù)器還具有許多優(yōu)秀的特質(zhì):
它將具有革命性的JMX微內(nèi)核服務(wù)作為其總線結(jié)構(gòu);
它本身就是面向服務(wù)的架構(gòu)(Service-Oriented Architecture,SOA);
它還具有統(tǒng)一的類裝載器,從而能夠?qū)崿F(xiàn)應(yīng)用的熱部署和熱卸載能力。
因此,它是高度模塊化的和松耦合的。JBoss用戶的積極反饋告訴我們,JBoss應(yīng)用服務(wù)器是健壯的、高質(zhì)量的,而且還具有良好的性能。JBoss簡介就是這些
二、JBoss的發(fā)展
為滿足企業(yè)級(jí)市場日益增長的需求,JBoss公司從2003年開始就推出了24*7、專業(yè)級(jí)產(chǎn)品支持服務(wù)。同時(shí),為拓展JBoss的企業(yè)級(jí)市場, JBoss公司還簽訂了許多渠道合作伙伴。在2004年6月,JBoss公司宣布,JBoss應(yīng)用服務(wù)器通過了Sun公司的J2EE認(rèn)證。這是JBoss應(yīng)用服務(wù)器發(fā)展史上至今為止最重要的里程碑。與此同時(shí),JBoss一直在緊跟最新的J2EE規(guī)范,而且在某些技術(shù)領(lǐng)域引領(lǐng)J2EE規(guī)范的開發(fā)。因此,無論在商業(yè)領(lǐng)域,還是在開源社區(qū), JBoss成為了第一個(gè)通過J2EE 1.4認(rèn)證的主流應(yīng)用服務(wù)器?,F(xiàn)在,JBoss應(yīng)用服務(wù)器已經(jīng)真正發(fā)展成具有企業(yè)強(qiáng)度(即,支持關(guān)鍵級(jí)任務(wù)的應(yīng)用)的應(yīng)用服務(wù)器。
近年來,Hibernate已經(jīng)成為了事實(shí)上的持久化引擎。JBoss公司致力于將自身發(fā)展成為開源項(xiàng)目的社區(qū),最新版的JBoss應(yīng)用服務(wù)器已經(jīng)將 Hibernate集成為JMXMBean服務(wù)。這使得用戶能夠在應(yīng)用服務(wù)器環(huán)境中直接使用Hibernate,而不管它是否處于J2EE上下文中。在最新版的JBoss應(yīng)用服務(wù)器中,用戶能夠直接通過JMXMBean服務(wù)訪問到JBossCache提供的服務(wù)。下一代的JBoss應(yīng)用服務(wù)器(暫定名為,JBoss5.0)將提供大量的新功能。除了支持最新的EJB 3.0規(guī)范外,新版的JBoss AOP將同它正式發(fā)布。同時(shí),JBoss開發(fā)團(tuán)隊(duì)還計(jì)劃開發(fā)新的微內(nèi)核層,即獨(dú)立于JMX,使得它能夠獨(dú)立使用。
三、JBoss的服務(wù)器架構(gòu)概述
JBoss的構(gòu)架和其他J2EE應(yīng)用服務(wù)器的構(gòu)架有著巨大的不同。JBoss的模塊架構(gòu)是建立在JMX底層上的,下圖展現(xiàn)了JBoss主要組件和JMX的聯(lián)系。
JMX - 層次
JMX是一個(gè)可復(fù)用框架,它為遠(yuǎn)程(Remote)和本地(Local)管理工具擴(kuò)展了應(yīng)用。它的架構(gòu)是層式架構(gòu)。他們是實(shí)現(xiàn)層(instrumentation layer)、代理層(agent layer)和發(fā)布層(distribution layer)。其中,發(fā)布層還在等待未來的標(biāo)準(zhǔn)化。簡要的表述是,用戶使用管理Bean,MBean來提供獲得相應(yīng)資源的實(shí)現(xiàn)方法。實(shí)現(xiàn)層實(shí)現(xiàn)相關(guān)的特性資源并將它發(fā)布于JMX相關(guān)應(yīng)用中,它的代理層控制和發(fā)布相應(yīng)的注冊在MBeanServer代理上的管理資源。 JBoss主要模塊
主要的JBoss模塊是在MeanServer上的可管理MBean。
1.JBoss EJB容器是JBoss服務(wù)器的核心實(shí)現(xiàn)。它有兩個(gè)特性,第一是在運(yùn)行期產(chǎn)生EJB 對(duì)象的Stub和Skeleton類,第二是支持熱部署。
2.JBossNS是JBoss命名服務(wù)用來定位對(duì)象和資源。它實(shí)現(xiàn)了JNDI J2EE規(guī)范.
3.JBossTX 是由JTA/JTS支持的交易管理控制.
4.部署服務(wù)支持EJB(jar)、Web應(yīng)用文檔(war)和企業(yè)級(jí)應(yīng)用文檔(ears)的部署。它會(huì)時(shí)刻關(guān)心J2EE應(yīng)用的URL情況,一旦它們被改變或出現(xiàn)的時(shí)候?qū)⒆詣?dòng)部署。
5.JBossMQ使Java 消息規(guī)范(JMS)的實(shí)現(xiàn)。
6.JBossSX支持基于JAAS的或不支持JAAS機(jī)制的安全實(shí)現(xiàn)。
7.JBossCX實(shí)現(xiàn)了部分JCA的功能。JCA制訂了J2EE應(yīng)用組件如何訪問基于連接的資源。
8.Web服務(wù)器支持Web容器和Servlet引擎。JBoss 2.4.x版本支持Tomcat 4.0.1,Tomcat 3.23和Jetty 3.x服務(wù).
四、JBoss架構(gòu)設(shè)計(jì)中的兩個(gè)重要的特性
第一是使用JMX作為一個(gè)軟件總線垂直的貫穿其所有的服務(wù),通過將新的服務(wù)組件遵循JMX規(guī)范掛接上"總線",使得系統(tǒng)擴(kuò)展現(xiàn)有的服務(wù)變得容易??刹迦胧娇蚣鼙粡V泛的運(yùn)用于服務(wù)的實(shí)現(xiàn)。開發(fā)者可以選擇他們需要的服務(wù)并編寫他們所需要的相應(yīng)實(shí)現(xiàn),通過定義在部署描述文件中,讓JBoss服務(wù)器知道。
第二是容器被設(shè)計(jì)成為動(dòng)態(tài)代理機(jī)制,這樣使容器的實(shí)現(xiàn)變得簡單和使開發(fā)者避免費(fèi)勁的將jar文件進(jìn)行預(yù)編譯以獲得stub和skeleton代碼。但是這樣做潛在的問題是性能和可測性,因?yàn)槲覀冎纉ava反射機(jī)制會(huì)引起性能的損失。JBoss中存在著相應(yīng)的優(yōu)化方案并且在將來的研究中我們會(huì)論述該優(yōu)化方法在什么時(shí)候工作并且是如何工作的。
【編輯推薦】