每天都在聽同事說JBoss
JBoss的
究竟什麼是JBoss呢
今天我急切的想知道這個問題的答案
多虧這萬能的Google
每當我遇到問題的時候
第一個想到的就是你
以下內容出自互聯網
解釋: Jboss是 web服務器的一種
主要做ejb容器
和tomcat集成就可以jsp
servlet
ejb通吃了
Jboss有兩種版本
一種是獨立的
一種是和tomcat集成的
當然都是免費的啦
EJB(enterprise javabean)
他不是javabean簡單的升級
而是一些提供分布式訪問的類
包括實體bean
會話bean
消息驅動bean
JBoss簡介
JBoss是一個運行EJB的J
EE應用服務器
它是開放源代碼的項目
遵循最新的J
EE規范
從JBoss項目開始至今
它已經從一個EJB容器發展成為一個基於的J
EE的一個web 操作系統(operating system for web)
它體現了J
EE規范中最新的技術
並且它還在the JavaWorld Editors
Choice
評選中獲得
最佳Java應用服務器
大獎
無論是學習還是應用
JBoss為我們提供了一個非常優秀的平台
有關JBoss的詳細信息請參閱其主頁
剛開始使用JBoss進行EJB開發時
由於可供參考的資源不是很多
所以有一個比較困難的起步階段
JBoss的配置和使用沒有提供圖形向導界面
所以開發部署EJB相對比較復雜
本文通過盡量具體的演示來對JBoss
下的EJB開發和部署的進行一個簡單的介紹
從而使剛開始使用JBoss的用戶可以很快地進入到真正的J
EE應用開發中
Enterprise JavaBean (EJB)規范定義了開發和部署基於事務性
分布式對象應用程序的服務器端軟件組件的體系結構
企業組織可以構建它們自己的組件
或從第三方供應商購買組件
這些服務器端組件稱作 Enterprise Bean
它們是 Enterprise JavaBean 容器中駐留的分布式對象
為分布在網絡中的客戶機提供遠程服務
解釋: JBoss是一個開源的符合J
EE規范的應用服務器
作為J
EE規范的補充
Jboss中引入了AOP框架
為普通Java類提供了J
EE服務
而無需遵循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簡介
近年來在JEE應用服務器領域JBoss是發展最為迅速的應用服務器JBoss是免費的開放源代碼JEE的實現它通過LGPL許可證進行發布這使得JBoss廣為流行Boss是一個運行EJB的JEE應用服務器例如數據庫訪問JDBC交易(JTA/JTS)消息機制(JTS)命名機制(JNDI)和管理支持(JMX)它是開放源代碼的項目遵循最新的JEE規范目前的JBoss發布版實現了EJB 和部分EJB 的標准JMS Servlet JSP JMX JNDI JDBC 和擴充(支持連接池 (Connection Polling))JavaMail/JAFJTA 和JAAS標准JBoss是%純Java實現能運行於任何平台
從JBoss項目開始至今它已經從一個EJB容器發展成為一個基於的JEE的一個web 操作系統(operating system for web)它體現了JEE規范中最新的技術並且它還在the JavaWorld Editors Choice 評選中獲得最佳Java應用服務器大獎無論是學習還是應用JBoss為我們提供了一個非常優秀的平台
另外JBoss應用服務器還具有許多優秀的特質:
它將具有革命性的JMX微內核服務作為其總線結構
它本身就是面向服務的架構(ServiceOriented ArchitectureSOA)
它還具有統一的類裝載器從而能夠實現應用的熱部署和熱卸載能力
因此它是高度模塊化的和松耦合的JBoss用戶的積極反饋告訴我們JBoss應用服務器是健壯的高質量的而且還具有良好的性能
二JBoss的發展
為滿足企業級市場日益增長的需求JBoss公司從年開始就推出了*專業級產品支持服務同時為拓展JBoss的企業級市場 JBoss公司還簽訂了許多渠道合作伙伴在年月JBoss公司宣布JBoss應用服務器通過了Sun公司的JEE認證 這是JBoss應用服務器發展史上至今為止最重要的裡程碑與此同時JBoss一直在緊跟最新的JEE規范 而且在某些技術領域引領JEE規范的開發因此無論在商業領域還是在開源社區 JBoss成為了第一個通過JEE 認證的主流應用服務器現在JBoss應用服務器已經真正發展成具有企業強度(即支持關鍵級任務的應用)的應用服務器
近年來Hibernate已經成為了事實上的持久化引擎JBoss公司致力於將自身發展成為開源項目的社區最新版的JBoss應用服務器已經將Hibernate集成為JMXMBean服務這使得用戶能夠在應用服務器環境中直接使用Hibernate而不管它是否處於JEE上下文中在最新版的JBoss應用服務器中用戶能夠直接通過JMXMBean服務訪問到JBossCache提供的服務下一代的JBoss應用服務器(暫定名為JBoss)將提供大量的新功能除了支持最新的EJB 規范外新版的JBoss AOP將同它正式發布同時JBoss開發團隊還計劃開發新的微內核層即獨立於JMX使得它能夠獨立使用
三JBoss的服務器架構概述
JBoss的構架和其他JEE應用服務器的構架有著巨大的不同JBoss的模塊架構是建立在JMX底層上的下圖展現了JBoss主要組件和JMX的聯系
JMX 層次
JMX是一個可復用框架它為遠程(Remote)和本地(Local)管理工具擴展了應用它的架構是層式架構他們是實現層(instrumentation layer)代理層(agent layer)和發布層(distribution layer)其中發布層還在等待未來的標准化簡要的表述是用戶使用管理BeanMBean來提供獲得相應資源的實現方法實現層實現相關的特性資源並將它發布於JMX相關應用中它的代理層控制和發布相應的注冊在MBeanServer代理上的管理資源
JBoss主要模塊
主要的JBoss模塊是在MeanServer上的可管理MBean
JBoss EJB容器是JBoss服務器的核心實現它有兩個特性第一是在運行期產生EJB 對象的Stub和Skeleton類第二是支持熱部署
JBossNS是JBoss命名服務用來定位對象和資源它實現了JNDI JEE規范
JBossTX 是由JTA/JTS支持的交易管理控制
部署服務支持EJB(jar)Web應用文檔(war)和企業級應用文檔(ears)的部署它會時刻關心JEE應用的URL情況一旦它們被改變或出現的時候將自動部署
JBossMQ使Java 消息規范(JMS)的實現
JBossSX支持基於JAAS的或不支持JAAS機制的安全實現
JBossCX實現了部分JCA的功能JCA制訂了JEE應用組件如何訪問基於連接的資源
Web服務器支持Web容器和Servlet引擎JBoss x版本支持Tomcat Tomcat 和Jetty x服務
四JBoss架構設計中的兩個重要的特性
第一是使用JMX作為一個軟件總線垂直的貫穿其所有的服務通過將新的服務組件遵循JMX規范掛接上總線使得系統擴展現有的服務變得容易可插入式框架被廣泛的運用於服務的實現開發者可以選擇他們需要的服務並編寫他們所需要的相應實現通過定義在部署描述文件中讓JBoss服務器知道
第二是容器被設計成為動態代理機制這樣使容器的實現變得簡單和使開發者避免費勁的將jar文件進行預編譯以獲得stub和skeleton代碼但是這樣做潛在的問題是性能和可測性因為我們知道java反射機制會引起性能的損失JBoss中存在著相應的優化方案並且在將來的研究中我們會論述該優化方法在什麼時候工作並且是如何工作的
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28717.html