概要
JBoss 應(yīng)用程序服務(wù)器(AS)4.0不僅是一個(gè)通過(guò)J2EE認(rèn)證的應(yīng)用程序服務(wù)器,而且也是多種領(lǐng)先優(yōu)勢(shì)開(kāi)源技術(shù)的一個(gè)融結(jié)點(diǎn)。這些技術(shù)簡(jiǎn)化了基于POJO的中間件應(yīng)用的開(kāi)發(fā)模型,而且將成為下一代J2EE標(biāo)準(zhǔn)。在這篇文章中,Dr. Michael 除了探究了JBoss AS 4.0中的新特性之外,還給你預(yù)覽了明日將出現(xiàn)什么。(2005/02/21)
在2004年的九月,JBoss應(yīng)用服務(wù)器(AS)4.0 通過(guò)了J2EE 1.4的認(rèn)證。對(duì)于JBoss的核心開(kāi)發(fā)人員和JBoss早期的采用者,JBoss AS 4.0 最振奮的并不是J2EE的認(rèn)證,而是目前J2EE無(wú)法涵蓋的新技術(shù)和極大地簡(jiǎn)化java中間件開(kāi)發(fā)的目標(biāo)。就是使用更加簡(jiǎn)單的,更加易于治理的POJO來(lái)替代已存在的EJB的理念。簡(jiǎn)化程序?qū)⑻岣唛_(kāi)發(fā)人員的效率,更好的程序性能和更少的Bug.簡(jiǎn)單化(a.k.a 輕量級(jí)開(kāi)發(fā))將是服務(wù)器端Java社區(qū)下一個(gè)重大的事件,JBoss AS 4.0 將是第一個(gè)在該方面邁出堅(jiān)實(shí)步伐的J2EE主流服務(wù)器。
這篇文章中,我將用三個(gè)示例程序來(lái)展示JBoss AS 4.0中POJO中間件框架的簡(jiǎn)單性,以及他們是如何與當(dāng)前和明日的J2EE規(guī)范關(guān)聯(lián)起來(lái)的。假如你是一個(gè)JBoss的用戶或者一個(gè)普通的J2EE開(kāi)發(fā)人員,這篇文章將教你一些不僅在目前的JBoss AS 4.0和將來(lái)的JBoss 5.0 或者 J2EE 1.5 服務(wù)器上可以應(yīng)用的輕便技巧。
讓我們從目前EJB 2.1中間件框架中固有的問(wèn)題開(kāi)始,來(lái)展示對(duì)一個(gè)更加簡(jiǎn)單的基于POJO框架的需要。
(開(kāi)源和J2EE規(guī)范――對(duì)于Java社區(qū)和開(kāi)源社區(qū)來(lái)說(shuō),JBoss的官方J2EE認(rèn)證是一個(gè)具有里程碑意義的事件。因?yàn)椴痪弥埃捎诟叱杀竞退蟮拇罅康谋WC質(zhì)量的工作,人們認(rèn)為,假如Sun不發(fā)慈悲的話,任何開(kāi)源的J2EE項(xiàng)目都不可能通過(guò)認(rèn)證的。JBoss 僅僅依靠自己就獲得了J2EE的認(rèn)證,證實(shí)了開(kāi)源開(kāi)發(fā)模型在交付迅速的企業(yè)Java解決方案的正確性)
(一)EJB 2.1出了什么問(wèn)題了?
開(kāi)始的時(shí)候,J2EE 在開(kāi)發(fā)具有伸縮性和分布性的服務(wù)器端應(yīng)用市場(chǎng)獲得了巨大的成功。然而,EJB,在J2EE里的一個(gè)核心的開(kāi)發(fā)中間件的構(gòu)件,卻獲得了一個(gè)太復(fù)雜和難用的名聲,非凡是對(duì)于中小型業(yè)務(wù)應(yīng)用的開(kāi)發(fā)。額外的EJB基礎(chǔ)代碼和部署描述符不僅使服務(wù)器資源承擔(dān)不起,而且,更加重要的是降低了開(kāi)發(fā)人員的效率。導(dǎo)致開(kāi)發(fā)人員最終寫更多了和需要維護(hù)更多的基礎(chǔ)代碼而不是業(yè)務(wù)邏輯。
為了證實(shí)以上觀點(diǎn), 和提供一個(gè)JBoss AS 4.0 支持的更加簡(jiǎn)單的解決方案的選擇性的比較,讓我們來(lái)看一個(gè)基于EJB 2.1的示例程序。抵押金計(jì)算器Web應(yīng)用程序先計(jì)算每個(gè)月每筆貸款的抵押金,將結(jié)果保存到一個(gè)關(guān)系數(shù)據(jù)庫(kù)里。每次計(jì)算之后,該程序在數(shù)據(jù)庫(kù)中之前的結(jié)果中搜索所需數(shù)額較低的抵押金。那些結(jié)果將在頁(yè)面的底部顯示。圖1 展示了該程序如何工作的。當(dāng)你初次使用該程序的時(shí)候,你將被要求填入一個(gè)用戶名和密碼。使用“user1” / “pass1”登錄,假如你想看到顯示給未授權(quán)用戶的錯(cuò)誤信息,請(qǐng)嘗試 “user3/pass3”。

圖1 實(shí)戰(zhàn)抵押金計(jì)算器web應(yīng)用,
從示例源碼包ejb2文件夾可以獲取該程序的源代碼,在ejb2目錄 (Windows)只要執(zhí)行build.bat命令或者build.sh命令(linux , Unix, 或者M(jìn)ac OS X系統(tǒng))來(lái)重建該應(yīng)用。將生成的ejb2/build/jar/MortgageCalculatorEJB2.ear文件拷貝到JBoss 服務(wù)器的server/default/deploy/部署。訪問(wèn)該應(yīng)用的URL將是
http://localhost:8080/MortgageCalculatorEJB2/servlet/Calculator.
為何要使用EJB?
對(duì)一個(gè)如此簡(jiǎn)單的應(yīng)用為什么使用EJB?EJB容器提供了一些有用的服務(wù),無(wú)須我們寫其他代碼,這些服務(wù)可以立即增加一些企業(yè)性的特性給我們的web應(yīng)用。例如,EJB會(huì)檢查用戶的信任度,對(duì)于所有的EJB方法的調(diào)用,容器將根據(jù)配置文件監(jiān)控其相關(guān)的數(shù)據(jù)庫(kù)事務(wù)。另外容器也治理者數(shù)據(jù)庫(kù)的表,和數(shù)據(jù)庫(kù)連接,所有這些都無(wú)須我們寫任何的SQL或者JDBC代碼。
在該分支下嘛,Web應(yīng)用有一個(gè)servlet接受用戶的輸入,同時(shí)產(chǎn)生Html頁(yè)面。Servlet將押金計(jì)算和數(shù)據(jù)庫(kù)相關(guān)的工作分派給一個(gè)EJB模塊來(lái)完成。
該應(yīng)用有兩個(gè)EJB構(gòu)件,Calculator bean是一個(gè)無(wú)狀態(tài)的會(huì)話bean,它包含了計(jì)算押金的,保存結(jié)果到數(shù)據(jù)庫(kù)的,搜索數(shù)據(jù)庫(kù)的事務(wù)性的方法。這些方法都曝露給了servlet.
Calculator bean使用了History實(shí)體bean訪問(wèn)數(shù)據(jù)庫(kù)。在EJB的配置文件里,我們定義了History實(shí)體bean的數(shù)據(jù)域是如何映射到數(shù)據(jù)庫(kù)的列的,對(duì)于一系列的History對(duì)象如何搜索數(shù)據(jù)庫(kù)。由于History bean是一個(gè)EJB,它無(wú)法在EJB容器外使用,所以我們創(chuàng)建了HistoryList 值對(duì)象來(lái)保持任何的搜索操作,結(jié)果將返回給servlet.
圖2,闡明了EJB模塊的結(jié)構(gòu)。它展示了所有需要的EJB組成接口和部署描述符的要素。

圖2 EJB模塊的重要構(gòu)件。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注