概要
JBoss 應用程序服務器(AS)4.0不僅是一個通過J2EE認證的應用程序服務器,而且也是多種領先優勢開源技術的一個融結點。這些技術簡化了基于POJO的中間件應用的開發模型,而且將成為下一代J2EE標準。在這篇文章中,Dr. Michael 除了探究了JBoss AS 4.0中的新特性之外,還給你預覽了明日將出現什么。(2005/02/21)
在2004年的九月,JBoss應用服務器(AS)4.0 通過了J2EE 1.4的認證。對于JBoss的核心開發人員和JBoss早期的采用者,JBoss AS 4.0 最振奮的并不是J2EE的認證,而是目前J2EE無法涵蓋的新技術和極大地簡化java中間件開發的目標。就是使用更加簡單的,更加易于治理的POJO來替代已存在的EJB的理念。簡化程序將提高開發人員的效率,更好的程序性能和更少的Bug.簡單化(a.k.a 輕量級開發)將是服務器端Java社區下一個重大的事件,JBoss AS 4.0 將是第一個在該方面邁出堅實步伐的J2EE主流服務器。
這篇文章中,我將用三個示例程序來展示JBoss AS 4.0中POJO中間件框架的簡單性,以及他們是如何與當前和明日的J2EE規范關聯起來的。假如你是一個JBoss的用戶或者一個普通的J2EE開發人員,這篇文章將教你一些不僅在目前的JBoss AS 4.0和將來的JBoss 5.0 或者 J2EE 1.5 服務器上可以應用的輕便技巧。
讓我們從目前EJB 2.1中間件框架中固有的問題開始,來展示對一個更加簡單的基于POJO框架的需要。
(開源和J2EE規范――對于Java社區和開源社區來說,JBoss的官方J2EE認證是一個具有里程碑意義的事件。因為不久之前,由于高成本和所要求的大量的保證質量的工作,人們認為,假如Sun不發慈悲的話,任何開源的J2EE項目都不可能通過認證的。JBoss 僅僅依靠自己就獲得了J2EE的認證,證實了開源開發模型在交付迅速的企業Java解決方案的正確性)
(一)EJB 2.1出了什么問題了?
開始的時候,J2EE 在開發具有伸縮性和分布性的服務器端應用市場獲得了巨大的成功。然而,EJB,在J2EE里的一個核心的開發中間件的構件,卻獲得了一個太復雜和難用的名聲,非凡是對于中小型業務應用的開發。額外的EJB基礎代碼和部署描述符不僅使服務器資源承擔不起,而且,更加重要的是降低了開發人員的效率。導致開發人員最終寫更多了和需要維護更多的基礎代碼而不是業務邏輯。
為了證實以上觀點, 和提供一個JBoss AS 4.0 支持的更加簡單的解決方案的選擇性的比較,讓我們來看一個基于EJB 2.1的示例程序。抵押金計算器Web應用程序先計算每個月每筆貸款的抵押金,將結果保存到一個關系數據庫里。每次計算之后,該程序在數據庫中之前的結果中搜索所需數額較低的抵押金。那些結果將在頁面的底部顯示。圖1 展示了該程序如何工作的。當你初次使用該程序的時候,你將被要求填入一個用戶名和密碼。使用“user1” / “pass1”登錄,假如你想看到顯示給未授權用戶的錯誤信息,請嘗試 “user3/pass3”。
圖1 實戰抵押金計算器web應用,
從示例源碼包ejb2文件夾可以獲取該程序的源代碼,在ejb2目錄 (Windows)只要執行build.bat命令或者build.sh命令(linux , Unix, 或者Mac OS X系統)來重建該應用。將生成的ejb2/build/jar/MortgageCalculatorEJB2.ear文件拷貝到JBoss 服務器的server/default/deploy/部署。訪問該應用的URL將是
http://localhost:8080/MortgageCalculatorEJB2/servlet/Calculator.
為何要使用EJB?
對一個如此簡單的應用為什么使用EJB?EJB容器提供了一些有用的服務,無須我們寫其他代碼,這些服務可以立即增加一些企業性的特性給我們的web應用。例如,EJB會檢查用戶的信任度,對于所有的EJB方法的調用,容器將根據配置文件監控其相關的數據庫事務。另外容器也治理者數據庫的表,和數據庫連接,所有這些都無須我們寫任何的SQL或者JDBC代碼。
在該分支下嘛,Web應用有一個servlet接受用戶的輸入,同時產生Html頁面。Servlet將押金計算和數據庫相關的工作分派給一個EJB模塊來完成。
該應用有兩個EJB構件,Calculator bean是一個無狀態的會話bean,它包含了計算押金的,保存結果到數據庫的,搜索數據庫的事務性的方法。這些方法都曝露給了servlet.
Calculator bean使用了History實體bean訪問數據庫。在EJB的配置文件里,我們定義了History實體bean的數據域是如何映射到數據庫的列的,對于一系列的History對象如何搜索數據庫。由于History bean是一個EJB,它無法在EJB容器外使用,所以我們創建了HistoryList 值對象來保持任何的搜索操作,結果將返回給servlet.
圖2,闡明了EJB模塊的結構。它展示了所有需要的EJB組成接口和部署描述符的要素。
圖2 EJB模塊的重要構件。
新聞熱點
疑難解答