EJB組件技術(shù)及應(yīng)用
- 期刊名字:微機(jī)發(fā)展
- 文件大?。?82kb
- 論文作者:何國輝
- 作者單位:五邑大學(xué)
- 更新時間:2020-06-12
- 下載次數(shù):次
15卷第3期微機(jī)發(fā)展Vol. 152005年3月Microcomputer DevelopmentMar.2005EJB組件技術(shù)及應(yīng)用何國輝(五邑大學(xué)信息學(xué)院,廣東江門529020)摘要:為了開發(fā)出具有良好的可移植性、可擴(kuò)展性、可重用性和可維護(hù)性的軟件系統(tǒng),達(dá)到改善軟件質(zhì)量的目的,最好的方式就是采用組件技術(shù)。文中根據(jù)FB組件結(jié)構(gòu)的特點研究了EJB組件的開發(fā)、部署和應(yīng)用方法,并重點分析了EJB組件間的調(diào)用過程。事實證明,通過采用EJB組件,能有效保證大型應(yīng)用軟件系統(tǒng)的集成,并滿足具有可移植性、可擴(kuò)展性可重用性和可維護(hù)性的要求。關(guān)鍵詞:EJB組件;2EE;Java命名與目錄接口中圖分類號:TP311.5文獻(xiàn)標(biāo)識碼:A文章編號:1005-3751(2005)03-0082-03The EJB Component Technology and ApplicationsHE GuO-hui(School of Information, Wuyi University, Jiangmen 529020, China)Abstract: In order to develop software system with better transplantation ability, extensibility, renewable ability and maintainability toreach the purpose of improving software quality, the best method is to utilize groupware technology. In this paper, acoording to the char-acteristics of EJb groupware structure, the development, deployment and application method of EJB groupware is investigated. The transfer process between ejB groupware is analyzed emphatically. The results demonstrate that the integration of large-scale application software system can be assured efficiently by use of ejb groupware technology, and the requirement of transplantation ability, extensibility,newable ability and maintainability can be satisfiedKey words: EJB component; J2EE; JNDI1FJB組件的特點這種結(jié)構(gòu)為應(yīng)用開發(fā)提供了多方面好處,主要體現(xiàn)EJB的全稱是 Enterprise JavaBean,是由SUN公司提在:出的一種基于組件模型的分布式對象標(biāo)準(zhǔn)構(gòu)架,EJB組件①簡易性。在這種結(jié)構(gòu)下應(yīng)用開發(fā)者可以僅花少量是基于EB標(biāo)準(zhǔn)構(gòu)架的部件和對象,通常也稱為企業(yè)的時間和精力來開發(fā)和部署企業(yè)應(yīng)用,因為寫EB組件Beam。在這種結(jié)構(gòu)中,通過EB容器提供了適合于EB幾乎與寫一個Java類一樣簡單其次,在開發(fā)過程中應(yīng)用組件開發(fā)、部署以及運行時管理的環(huán)境。在企業(yè)應(yīng)用中,開發(fā)者不必關(guān)心系統(tǒng)級事項如安全管理事務(wù)處理、多線ETB組件的作用就是實現(xiàn)系統(tǒng)業(yè)務(wù)過程,它能將業(yè)務(wù)邏輯程、分布式設(shè)計連接資源管理等問題。封裝起來,并具有中間件的功能,當(dāng)應(yīng)用運行時,EJB組件②可移植性。因為基于EJB的應(yīng)用可以部署在任何就駐留在EJB容器中。一個基于2EE的應(yīng)用就是由一與J2EE兼容的服務(wù)器上,因此只要應(yīng)用服務(wù)器兼容,就個或多個這樣的EJB組件構(gòu)成的因此開發(fā)E結(jié)構(gòu)應(yīng)能夠?qū)?yīng)用移植過來用的最主要問題就是開發(fā)基于EB結(jié)構(gòu)的部件2。③部件可重用性。因為每一個EJB組件都是可重用在J2EE體系結(jié)構(gòu)中,一個EB組件具有調(diào)用另外的的部件,從而可以實現(xiàn)一次開發(fā)多次使用。EB組件的特點而且這些EJB組件不僅允許部署在同④便于團(tuán)隊開發(fā)。當(dāng)明確了各EJB組件的作用和功個EJB容器中,而且還允許跨FB容器或應(yīng)用服務(wù)器進(jìn)能后就可以分頭開發(fā)各部件。當(dāng)軟件需要維護(hù)或進(jìn)行功行部署。一些大型的應(yīng)用系統(tǒng)結(jié)構(gòu)如圖1所示能擴(kuò)充時,也很方便。盤氣之系能十由干企業(yè)應(yīng)用是由一個或多收稿日期:2004-06-23個中國煤化工具有部件特點因此構(gòu)基金項目:廣東省自然科學(xué)基金資助項目(032356);江門市科技攻關(guān)建CNMHGEJB組件并將它們進(jìn)項目([2002]73號行疊加組合的過程作者簡介:何國輝(1962-),男江西萍鄉(xiāng)人,副教授碩士生導(dǎo)師基于上述優(yōu)點因此對于一些功能龐大、結(jié)構(gòu)復(fù)雜的究方向為軟件開發(fā)技術(shù)、數(shù)據(jù)庫理論及應(yīng)用技術(shù)等系統(tǒng),采用EJB組件技術(shù)進(jìn)行開發(fā)是理想的選擇。第3期何國輝:EJB組件技術(shù)及應(yīng)用8客戶1應(yīng)用服務(wù)器1實現(xiàn)成一個會話Ban客戶容器EJB容器EJB容器2每個EJB組件通常由4個部企業(yè)Bean顯示部件分組成,即一個主Java類、2個接企業(yè)Bean2企業(yè)Bean企業(yè)Bma;:口和一個部暑描述文件③,4。主Java類又稱為 implementation(實客戶容器現(xiàn))類或Bean類,而2個接口則分示部件別是Home與 Remote,部署描述文數(shù)據(jù)庫服務(wù)器1件是一個ⅪML格式文件,文件名企業(yè)Bean31其它客戶數(shù)據(jù)庫1為ejb-rar.xml,是所有EJB在部客戶容器EAppnEJB企業(yè)Bean3n署時都必須提供的文件,與容器無示部件數(shù)據(jù)庫服務(wù)器2關(guān)。它用來向容器聲明EJB組件將如何部署到容器中去,以及EJBwb容器數(shù)據(jù)庫2J組件將希望容器為組件提供哪些瀏覽器ServletISP Page服務(wù)。實體Bean還包含一個主鍵數(shù)據(jù)庫3類。其中有:圖1基于EJB組件模型的企業(yè)應(yīng)用結(jié)構(gòu)Home(主)接口:定義一組方法來創(chuàng)建新的FB對象,查找定位和清除已有的EJB2EJB組件的結(jié)構(gòu)對象。在EJB組件部署時容器也會自動生成相應(yīng)的EJB組件主要包括會話Bean( Sesson bean)和實體Home對象,該對象負(fù)責(zé)查找和創(chuàng)建EJB對象,返回FBBean( Entity Bean)兩種類型(新版本中增加了消息驅(qū)動對象的引用給客戶,用戶可以利用該引用調(diào)用EB組件Bean)3l。Bean是一種作為單用戶執(zhí)行的對象,一些復(fù)雜中的方法得到結(jié)果,最后Home對象清除EJB對象??梢缘挠嬎愫蜆I(yè)務(wù)邏輯就放在這些Bean中。形象地稱Hme接口為EJB對象的工廠會話Bean是客戶端應(yīng)用程序的擴(kuò)展,負(fù)責(zé)管理整個Remote(組件)接口:定義EJB組件中提供的可供執(zhí)行過程或任務(wù),包括與實體Bean之間的交互。當(dāng)應(yīng)用用戶調(diào)用的方法,也就是通常所說的實現(xiàn)商業(yè)邏輯的函數(shù)運行時EB組件就駐留在EB容器中EB容器會自動或過程以供遠(yuǎn)程客戶端調(diào)用。在EB組件部署到容器生成所需的數(shù)據(jù)訪問邏輯??蛻舳送ㄟ^調(diào)用會話Bean的的時候,容器將自動生成 Remote接口相應(yīng)的實例,即EJB功能實現(xiàn)與E服務(wù)器的通信。會話Bean在客戶會話對象它負(fù)責(zé)代理用戶的調(diào)用請求。期間,通過方法的調(diào)用,來獲得用戶的信息。implementation類(Bean類)是對Home和 Remote而實體Bean則代表業(yè)務(wù)處理對象,負(fù)責(zé)企業(yè)信息的接口中聲明的方法及必需的生命周期方法(有別于業(yè)務(wù)邏維護(hù)和管理這些對象通常是數(shù)據(jù)庫中的一些持久記錄,輯方法)的具體實現(xiàn)可由多個Java類構(gòu)成例如:一個實體Bean能夠模擬數(shù)據(jù)庫表中一行相關(guān)的數(shù)主鍵類(僅限于實體Bean):為了能在數(shù)據(jù)庫中查據(jù)。實體Bean根據(jù)管理持久性的方式不同可分為容器管找到相關(guān)數(shù)據(jù)而給每一個實體Bean建立的惟一標(biāo)識,通理的Bean(CMP)和由Bean管理的Bean(BMP)。容器管過該標(biāo)識 client就能定位特定的數(shù)據(jù)塊。理的Ba由EJB容器自動管理它們的持久性,通過在部當(dāng)EJB組件的各部分開發(fā)完成以后,需要借助專門署文件中的描述,容器知道Bean實例的字段是怎樣映射的開發(fā)工具將編譯生成的類文件(cass)部署描述文件到數(shù)據(jù)庫中去的,并自動管理插入更新和刪除數(shù)據(jù)庫中及與容器相關(guān)的部署描述文件(根據(jù)所選容器而定)生成與實體有關(guān)的數(shù)據(jù);使用Bean管理持久性的Bean需要開個JAR文件。JAR文件是一個和ZIP文件格式相同的發(fā)者編寫相應(yīng)代碼來操作數(shù)據(jù)庫,EJB容器只告訴Bean壓縮文件,只是其中多了一個 manifest文件,用于記錄實例什么時候可以在數(shù)據(jù)庫中安全地插入、更新和刪除數(shù)AR文件中的所有內(nèi)容。對于不同的容器提供的與容器據(jù)除此之外,它不提供任何別的幫助,Bean實例需自己相關(guān)的部署描述文件也不相同,以 weblogic為例,它除了完成所有的持久性工作。每個實體Bam都具有一個惟一要求提供q- jar.xml文件以外,還要求提供另外一個部的對象標(biāo)識符稱為主鍵實體Bemn之間也可以具有關(guān)署描述eih- iar xml-用 Jbuilder開發(fā)EJB系,關(guān)系的實現(xiàn)也分別由Bean代碼或部署描述項完成,從時,編中國煤化工AR文件。一個而保證了數(shù)據(jù)完整性和關(guān)系完整性。JAR文THCNMHG示。根據(jù)上述兩種Bean的作用和各自的特點,因此在Bean的開發(fā)過程中通??蓪I(yè)務(wù)實體實現(xiàn)成一個實體3EJB組件的應(yīng)用Bean或一個實體Bean的依賴而將一個會話性業(yè)務(wù)過程EJB組件不能獨立運行,它們必須要部署到容器上84微機(jī)發(fā)展第15卷tomer Bean中的 ejbCreate方法完成), Remote接口中定義m11gmd1| Enterprise]I I Home 1 Remote Enterpris I了獲得客戶名稱等可以被外界調(diào)用的所有方法(由Cs接接口Bean類接口按日Bm類 merMan中的代碼實現(xiàn)有關(guān)功能),因此當(dāng)普通的Jaa程序作為客戶端訪問一個名為 CustomerEJB的EJB組件bjxm容器相關(guān)ejb-jar.xm容器相關(guān)時的具體步驟將是:部署文件部署文件(1)首先通過 JNDI API定位Hme對象會話bean實體beanJNDI( Java Name and Directory Interface)是Java命名與目錄接口的英文首字母縮寫,主要用于命名與目錄訪問,在J2EE中查找數(shù)據(jù)源和EJB對象都離不開JD,因JAR文件提供者此十分重要。其定位Home對象的代碼為EJB JAR文件Properties props= System get Properties ();Context ctx= new initialContext( props);/獲得命名服務(wù)的圖2JAR文件內(nèi)容上下文環(huán)境,參數(shù) props與容器有關(guān)并只有通過外部程序?qū)JB的業(yè)務(wù)邏輯進(jìn)行調(diào)用時才會Object obj=ctx. lookup(“ CustomerHome");/查找Hbme接體現(xiàn)其功能。在 Jbuilder和 weblogic的FB組件集成開發(fā)口環(huán)境中,EJB組件的部署很方便,其主要步驟是:先啟動CustomerHome home=(CustomerHome)weblogic服務(wù)器然后在編譯好的EJB模塊名上單擊鼠標(biāo)javax. mi. Portable Remote Object, narrow (obj, CustomerHome右鍵(EJB模塊是在創(chuàng)建工程以后創(chuàng)建的包含一個或多cs);1定位he對象個AR文件—模塊名jr中,在彈出的快捷菜單中選弟(2)由Hme對象調(diào)用相應(yīng)的cre法生成EB對個EJB組成的邏輯組,組內(nèi)的所有EJB都將放置到同擇 Deploy Options for模塊名jar| Deploy選項,即可完成通過ND查找到的是Hme對象,要生成EJB對象EJB組件的部署。還必須要調(diào)用Home對象的 create方法,即通過 Customer當(dāng)容器所在服務(wù)器啟動時將會自動加載已經(jīng)部署到 customer=home. create(…)方式來創(chuàng)建。除無狀態(tài)會話容器上的EB組件,并打開監(jiān)聽端口等待外部程序調(diào)用。Bean以外,其它幾類Bean的cree方法中都要傳人參數(shù)。EJB組件的外部程序通常稱作為EJB的客戶。能夠充當(dāng)(3)通過EB對象調(diào)用FJB組件中的方法EJB客戶的可以是普通的Java程序、其它的EJB組件或在得到了EJB對象的引用以后,客戶端程序就可以W山組件(JSP或Sele組件)。無論是上述哪一種作為調(diào)用其中的業(yè)務(wù)方法了。通常會在Rmoe接口 CustomerEJB客戶,都可按圖3方式進(jìn)行調(diào)用。中定義很多方法,如:獲得客戶代碼、客戶名稱及其它業(yè)務(wù)1:檢素Hone對象引用邏輯等,這些方法的具體實現(xiàn)過程在實現(xiàn)類C命名服務(wù) tomerBean中說明,因此就可按如下所示使用2:返回Home對象引用String cust. ld= customer get customerldO);String cust- Name= customer. getCustomer Nameo)3:創(chuàng)建新的EJEJB組HOME對象對于一個EJB組件作為客戶端訪問另一個EJB5:返回EB對象組件的過程和上述步驟基本相似,但不必提供任何JNDI初始化參數(shù),系統(tǒng)僅需獲得默認(rèn)的JNDI初始4:生成EB對象化上下文環(huán)境。以一個訂單EB(名為 OrderEJB,實體Bean)調(diào)用 CustomerEJB為例,在 OrderEJB的實6:調(diào)用業(yè)務(wù)方法8B對象[7運行實現(xiàn)類代碼現(xiàn)類中,只要采用如下代碼就可獲得 CustomerEJB的Home接口引用:Context ctx= new InitialContext();/通過調(diào)用無參數(shù)ETB服務(wù)器的構(gòu)造函數(shù),獲得默認(rèn)的初始化上下文圖3EB客戶調(diào)用過程為了便于理解,以下將通過一個名為 CustomerEJB的HomEJB組件被調(diào)用過程進(jìn)行說明。按照EJB的命名約定,該H中國煤化 T: omp/env/eortustomer.CNMHgme組件的有關(guān)接口文件可命名如下:Home接口為 Customeriavax. rmi. PortableRemoteObject narrow(obj, CustomerHomeHome, Remote接口為 Customer,實現(xiàn)類為 Customerbeandasy);/定位Home對象同時Home接口中定義了 create方法(具體實現(xiàn)由Cus(下轉(zhuǎn)第123頁)第3期寧剛等:基于 WITSML的鉆井?dāng)?shù)據(jù)文檔設(shè)計實現(xiàn)123
-
C4烯烴制丙烯催化劑 2020-06-12
-
煤基聚乙醇酸技術(shù)進(jìn)展 2020-06-12
-
生物質(zhì)能的應(yīng)用工程 2020-06-12
-
我國甲醇工業(yè)現(xiàn)狀 2020-06-12
-
石油化工設(shè)備腐蝕與防護(hù)參考書十本免費下載,絕版珍藏 2020-06-12
-
四噴嘴水煤漿氣化爐工業(yè)應(yīng)用情況簡介 2020-06-12
-
Lurgi和ICI低壓甲醇合成工藝比較 2020-06-12
-
甲醇制芳烴研究進(jìn)展 2020-06-12
-
精甲醇及MTO級甲醇精餾工藝技術(shù)進(jìn)展 2020-06-12
