摘要:本文介紹了J2EE的分層結(jié)構(gòu),深入研究了如何使用Session Facade模式和ValueObject 模式設(shè)計(jì)EJB,并對(duì)其開(kāi)發(fā)過(guò)程做了較詳細(xì)的說(shuō)明。
關(guān)鍵字:EJB ;值對(duì)象模式;會(huì)話外觀模式
一、概述
與傳統(tǒng)的二層體系結(jié)構(gòu)相比,J2EE有兩個(gè)特點(diǎn):
1、定義了一套標(biāo)準(zhǔn)化組件,通過(guò)為這些組件提供完整的服務(wù)。
2、使用多層分布式的應(yīng)用程序模型。應(yīng)用程序的邏輯根據(jù)其實(shí)現(xiàn)的不同功能被封裝到不同的組件中。如圖1所示。
這種多層結(jié)構(gòu)使企業(yè)級(jí)應(yīng)用具有很強(qiáng)的伸縮性,允許各層專注于某種特定的角色:
1、Client Tier用于顯示。
2、Web Tier用于生成動(dòng)態(tài)顯示。
3、Business Tier用于實(shí)現(xiàn)業(yè)務(wù)邏輯。
4、EIS Tier用于數(shù)據(jù)庫(kù)服務(wù)。
其中,用于實(shí)現(xiàn)業(yè)務(wù)邏輯的EJB組件架構(gòu)是J2EE的基礎(chǔ)和最重要的部分。
正是認(rèn)識(shí)到J2EE平臺(tái)作為一種可擴(kuò)展的、全功能的平臺(tái),可以將關(guān)鍵的企業(yè)應(yīng)用擴(kuò)展到任何Web瀏覽器上并可適合多種不同的Internet數(shù)據(jù)流、可連接到幾乎任何一種傳統(tǒng)數(shù)據(jù)庫(kù)和解決方案,J2EE已經(jīng)成為開(kāi)發(fā)電子商務(wù)應(yīng)用的事實(shí)標(biāo)準(zhǔn)。
為了使開(kāi)發(fā)者開(kāi)發(fā)出規(guī)范的、可重用的應(yīng)用程序,J2EE為我們提供了大量的模式。模式盡管有時(shí)不易理解,但使用卻非常簡(jiǎn)單,它提供了強(qiáng)大的可重用機(jī)制,避免了開(kāi)發(fā)者和設(shè)計(jì)者的重復(fù)投資。
可是,面對(duì)如此多的模式,初學(xué)者往往不知如何下手,為此,作者結(jié)合以往的開(kāi)發(fā)經(jīng)驗(yàn),詳細(xì)介紹如何使用模式完成EJB的設(shè)計(jì)。
二、設(shè)計(jì)與實(shí)現(xiàn)
1.值對(duì)象模式
J2EE應(yīng)用程序把服務(wù)器端業(yè)務(wù)組件實(shí)現(xiàn)為會(huì)話Bean和實(shí)體Bean。對(duì)于實(shí)體Bean的創(chuàng)建,開(kāi)發(fā)人員通常采用CMP(容器管理持久性)模式,其好處在于容器提供公共的服務(wù),例如目錄服務(wù)、事務(wù)管理、安全性、持久性、資源緩沖池以及容錯(cuò)性等,使開(kāi)發(fā)人員不必維護(hù)將會(huì)集成到業(yè)務(wù)邏輯中的系統(tǒng)級(jí)代碼,只需專注于商業(yè)邏輯。
一般來(lái)說(shuō),有了實(shí)體bean,就可以通過(guò)調(diào)用業(yè)務(wù)組件的一些方法向客戶端返回?cái)?shù)據(jù)。初學(xué)者往往會(huì)認(rèn)為既然客戶端可以與服務(wù)器通信,那么任務(wù)就算完成了??墒?,問(wèn)題恰恰出在這里。業(yè)務(wù)組件的get方法只能返回一個(gè)屬性值,這就導(dǎo)致需要獲得所有屬性值的客戶端需要多次調(diào)用業(yè)務(wù)對(duì)象的get方法,如圖2-1所示。每次調(diào)用都是一次網(wǎng)絡(luò)調(diào)用,都會(huì)造成系統(tǒng)性能的退化,當(dāng)調(diào)用次數(shù)增多時(shí),系統(tǒng)性能就會(huì)嚴(yán)重下降。
關(guān)鍵字:EJB ;值對(duì)象模式;會(huì)話外觀模式
一、概述
與傳統(tǒng)的二層體系結(jié)構(gòu)相比,J2EE有兩個(gè)特點(diǎn):
1、定義了一套標(biāo)準(zhǔn)化組件,通過(guò)為這些組件提供完整的服務(wù)。
2、使用多層分布式的應(yīng)用程序模型。應(yīng)用程序的邏輯根據(jù)其實(shí)現(xiàn)的不同功能被封裝到不同的組件中。如圖1所示。
這種多層結(jié)構(gòu)使企業(yè)級(jí)應(yīng)用具有很強(qiáng)的伸縮性,允許各層專注于某種特定的角色:
1、Client Tier用于顯示。
2、Web Tier用于生成動(dòng)態(tài)顯示。
3、Business Tier用于實(shí)現(xiàn)業(yè)務(wù)邏輯。
4、EIS Tier用于數(shù)據(jù)庫(kù)服務(wù)。
其中,用于實(shí)現(xiàn)業(yè)務(wù)邏輯的EJB組件架構(gòu)是J2EE的基礎(chǔ)和最重要的部分。
正是認(rèn)識(shí)到J2EE平臺(tái)作為一種可擴(kuò)展的、全功能的平臺(tái),可以將關(guān)鍵的企業(yè)應(yīng)用擴(kuò)展到任何Web瀏覽器上并可適合多種不同的Internet數(shù)據(jù)流、可連接到幾乎任何一種傳統(tǒng)數(shù)據(jù)庫(kù)和解決方案,J2EE已經(jīng)成為開(kāi)發(fā)電子商務(wù)應(yīng)用的事實(shí)標(biāo)準(zhǔn)。
為了使開(kāi)發(fā)者開(kāi)發(fā)出規(guī)范的、可重用的應(yīng)用程序,J2EE為我們提供了大量的模式。模式盡管有時(shí)不易理解,但使用卻非常簡(jiǎn)單,它提供了強(qiáng)大的可重用機(jī)制,避免了開(kāi)發(fā)者和設(shè)計(jì)者的重復(fù)投資。
可是,面對(duì)如此多的模式,初學(xué)者往往不知如何下手,為此,作者結(jié)合以往的開(kāi)發(fā)經(jīng)驗(yàn),詳細(xì)介紹如何使用模式完成EJB的設(shè)計(jì)。
二、設(shè)計(jì)與實(shí)現(xiàn)
1.值對(duì)象模式
J2EE應(yīng)用程序把服務(wù)器端業(yè)務(wù)組件實(shí)現(xiàn)為會(huì)話Bean和實(shí)體Bean。對(duì)于實(shí)體Bean的創(chuàng)建,開(kāi)發(fā)人員通常采用CMP(容器管理持久性)模式,其好處在于容器提供公共的服務(wù),例如目錄服務(wù)、事務(wù)管理、安全性、持久性、資源緩沖池以及容錯(cuò)性等,使開(kāi)發(fā)人員不必維護(hù)將會(huì)集成到業(yè)務(wù)邏輯中的系統(tǒng)級(jí)代碼,只需專注于商業(yè)邏輯。
一般來(lái)說(shuō),有了實(shí)體bean,就可以通過(guò)調(diào)用業(yè)務(wù)組件的一些方法向客戶端返回?cái)?shù)據(jù)。初學(xué)者往往會(huì)認(rèn)為既然客戶端可以與服務(wù)器通信,那么任務(wù)就算完成了??墒?,問(wèn)題恰恰出在這里。業(yè)務(wù)組件的get方法只能返回一個(gè)屬性值,這就導(dǎo)致需要獲得所有屬性值的客戶端需要多次調(diào)用業(yè)務(wù)對(duì)象的get方法,如圖2-1所示。每次調(diào)用都是一次網(wǎng)絡(luò)調(diào)用,都會(huì)造成系統(tǒng)性能的退化,當(dāng)調(diào)用次數(shù)增多時(shí),系統(tǒng)性能就會(huì)嚴(yán)重下降。