摘要:軟件產(chǎn)業(yè)的迅速發(fā)展帶動了軟件開發(fā)的技術(shù)進(jìn)步,Java技術(shù)在商用軟件中的應(yīng)用越來越普遍。針對基于Java企業(yè)開發(fā)平臺中使用的EJB技術(shù)的原理和功能,對企業(yè)應(yīng)用程序的兩種模型進(jìn)行分析和研究。
關(guān)鍵詞:EJB;軟件開發(fā);Java;技術(shù)原理
中圖分類號:F713.36 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9599 (2012) 24-0184-02
隨著計算機網(wǎng)絡(luò)技術(shù)和通信技術(shù)的進(jìn)步,計算機應(yīng)用軟件日益廣泛的應(yīng)用于工業(yè)生產(chǎn)和各種活動中,其中,Java在商業(yè)軟件領(lǐng)域得到了很好的發(fā)展。JavaBean是一種Java語言寫成的可重用組件,由Java語言的締造者Sun Microsystems公司提出,實際上,JavaBean作為一類特殊的Java,是基于Java語言開發(fā)的可重復(fù)利用組件,在可視化和非可視化領(lǐng)域發(fā)揮著越來越重要的作用。
1 Enterprise JavaBeans(EJB)技術(shù)概述
Java憑借其良好的跨平臺性成為服務(wù)器端的理想語言,J2EE的開發(fā)正是為了更好地發(fā)揮Java在服務(wù)器端的計算功能,為基于Java的服務(wù)器端配置提供一個能夠獨立于平臺的可攜帶的多用戶企業(yè)級安全平臺,而J2EE的基石就是Enterprise JavaBean(EJB)。EJB本身不作為一種產(chǎn)品,它是建立于Java服務(wù)器端組件的規(guī)范,很多軟件廠商就是通過它來提供組件同管理組件框架規(guī)范來實現(xiàn)EJB服務(wù)器。通常應(yīng)用軟件程序的設(shè)計與開發(fā)只關(guān)注于支持應(yīng)用所需的商業(yè)邏輯,不必理會框架的實現(xiàn)方式。EJB組件結(jié)構(gòu)的開發(fā)只專注于編寫商業(yè)邏輯,同時取消了編寫“全程(plumbing)”碼的要求,允許軟件廠商在不放棄其核心服務(wù)內(nèi)容的前提條件下適當(dāng)增強一部分功能。如此一來,企業(yè)開發(fā)商無需再編寫體系結(jié)構(gòu)運行的活動、安全、共享、鏈接等代碼,這些任務(wù)在EJB中已經(jīng)委托給了服務(wù)器廠商來完成。
2 EJB技術(shù)的工作原理
EJB技術(shù)的設(shè)計目標(biāo)是為企業(yè)及應(yīng)用開發(fā)人員實現(xiàn)后臺業(yè)務(wù)提供一個規(guī)范,并盡可能地減少建立應(yīng)用程序,很好地避免了軟件開發(fā)作業(yè)中總是重復(fù)出現(xiàn)的問題,其中的設(shè)計原理主要是將需要手工編碼的特性轉(zhuǎn)化為企業(yè)Beans簡單聲明屬性來實現(xiàn)的。EJB技術(shù)規(guī)范中創(chuàng)建了一種底層結(jié)構(gòu),涉及到系統(tǒng)級的編程,比如安全、共享、命名及遠(yuǎn)程訪問等等,底層的事務(wù)通過API技術(shù)將分布式應(yīng)用程序以對象組件模型為基礎(chǔ),對訪問現(xiàn)有的應(yīng)用程序過程盡可能地簡化,同時,為程序工具的創(chuàng)建和使用設(shè)計了統(tǒng)一的應(yīng)用程序開發(fā)模型。EJB技術(shù)是基于JAVA語言而開發(fā)的,其相對配置更為簡易,通過可重復(fù)利用的組件EnterpriseBeans來組建分布式的應(yīng)用程序,這個過程就好比堆搭積木,將各程序的代碼寫成之后,再組合形成文件,將這些組合而成的文件配以特定的參數(shù),最后配置到一個建有EJB模型的平臺上,客戶只需將已經(jīng)分配好的beans進(jìn)行接口定位,這個beans就會產(chǎn)生相應(yīng)的實例,如此,客戶可以輕松地調(diào)用任何一個Beans的應(yīng)用方法和遠(yuǎn)程接口。
EJB服務(wù)器充當(dāng)著EJB容器與底層平臺紐帶的角色,負(fù)責(zé)管理EJB容器和實例,一方面它向EJB容器提供了訪問系統(tǒng)服務(wù)的能力,像事務(wù)的管理和其它應(yīng)用程序的運行管理都要在EJB容器中完成,另一方面關(guān)于EJB的實例全部都運行于容器中,EJB容器為服務(wù)器提供訪問服務(wù),同時也對EJB實行全面控制。實例的活動會引起相應(yīng)平臺數(shù)據(jù)庫的變化,數(shù)據(jù)庫的持續(xù)更新就要靠EJB容器來保證,容器將實例之間的事務(wù)活動分別開來,彼此之間并不產(chǎn)生任何影響,從而成功實現(xiàn)更新數(shù)據(jù)庫,如果更新失敗,就恢復(fù)成事務(wù)實例原來的狀態(tài),也不會對其它平臺的數(shù)據(jù)庫造成影響。在實際應(yīng)用中,EJB組件已經(jīng)包含了能夠處理企業(yè)數(shù)據(jù)的應(yīng)用邏輯,對客戶界面進(jìn)行了初始定義,這個初始定義在以后的事務(wù)活動中并不受到容器與服務(wù)器的影響。所以,無論是EJB訪問服務(wù)器還是被調(diào)取到應(yīng)用程序時,都無需重新定義和編譯代碼。EJB可以實現(xiàn)很多系統(tǒng)級的服務(wù),包括安全和事務(wù)處理的特性,雖然它們都不是屬于EJB類的,但是可以通過配置和組裝應(yīng)用程序的工具來實現(xiàn)。
3 Java中企業(yè)應(yīng)用程序模型
EJB的開發(fā)設(shè)計適用性較為廣泛,除了可以提供底層結(jié)構(gòu),還包括了兩個建立在企業(yè)應(yīng)用程序的基本模型。在這兩個模型當(dāng)中,其中一個是客戶作為應(yīng)用程序的對象,這個對象能夠為客戶執(zhí)行一定的數(shù)據(jù)庫任務(wù);另一個模型中,客戶訪問的對象則變成了實體,實體可能包括了數(shù)據(jù)庫中的應(yīng)用程序。SessionBeans包括了第一種模型,代表了與客戶的瞬時對話,并能夠為客戶執(zhí)行數(shù)據(jù)庫的讀寫,能夠輕易的實現(xiàn)商業(yè)邏輯,像商務(wù)中的報價、交易、訂單選擇等。EntityBeans包括了第二種模型,通??梢远x為代表數(shù)據(jù)庫中的一個記錄,客戶每訪問一個實體對象,就會產(chǎn)生一個記錄,功能優(yōu)化后的EntityBeans還可以代表數(shù)據(jù)庫表間關(guān)聯(lián)視圖。
通過兩種模型的對比來看,sessionbean似乎用處不大,特別是對于數(shù)據(jù)驅(qū)動的應(yīng)用程序,實際上由于entitybean通常作為底層數(shù)據(jù)庫的一個對象,其實例數(shù)與數(shù)據(jù)庫之間都是一對一的,也就是說,當(dāng)多個客戶端必須訪問底層記錄之時,客戶端要想與之匹對就只有共享entitybean,一旦共享之后,entitybean便不能再保存相應(yīng)客戶端的數(shù)據(jù)信息。通過前面的描述,我們知道sessionbean允許保存客戶端的狀態(tài)信息,客戶端與sessionbean實例間是一一對應(yīng)的關(guān)系,可以很好地彌補entitybean的不足。最為理想的組合是客戶端首先通過sessionbean連接服務(wù)器,接著再由sessionbean通過entitybean訪問數(shù)據(jù)庫,如此不僅可以實現(xiàn)客戶端信息的保存,還能夠使得數(shù)據(jù)庫中的信息始終保持讀寫操作的暢通,最終實現(xiàn)信息的記錄與保存,而sessionbean也不會獨立地進(jìn)行全局的事務(wù)控制。值得一提的是,如果不調(diào)用sessionbean,客戶端(應(yīng)用程序)開發(fā)者不能直接連接服務(wù)器,就必須要首先響應(yīng)EJB類的事務(wù)要求,再選擇客戶端的事務(wù)劃分功能來進(jìn)行事務(wù)控制。因此,EJB帶給軟件開發(fā)商的優(yōu)勢主要在于不用了解EJB類的事務(wù)需求,可以直接使用sessionbean作為商務(wù)邏輯控制,而不用再對客戶端進(jìn)行事務(wù)劃分。
4 結(jié)束語
軟件產(chǎn)業(yè)的發(fā)展,帶動了Java技術(shù)在各商務(wù)軟件的應(yīng)用。企業(yè)JavaBean正是基于Java語言邏輯的開發(fā),并為軟件設(shè)計企業(yè)提供了一種開發(fā)、部署和管理分布式商務(wù)應(yīng)用程序的新途徑。開發(fā)人員利用JavaBean就可以省去了系統(tǒng)級編程的擔(dān)憂,直接采用可重復(fù)利用的服務(wù)器組件,商務(wù)邏輯的實現(xiàn)變得更為簡單,這對于企業(yè)應(yīng)用程序的開發(fā)管理可以說是十分實用的一個技術(shù)進(jìn)步。
參考文獻(xiàn):
[1]彭兵,羅薇.基于JavaBean的數(shù)據(jù)庫訪問技術(shù)[J].電腦知識與技術(shù)(學(xué)術(shù)交流),2007(13).
[2]孫發(fā)令.Java軟件的性能測試[J].中國新通信,2012(09).
[3]李蘋.基于JSP與JavaBean技術(shù)的數(shù)據(jù)庫訪問方法研究[J].楚雄師范學(xué)院學(xué)報,2006(09).
[4]劉平波.基于JSP與JavaBean的購物車設(shè)計[J].科協(xié)論壇(下半月),2008(02).