版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
3.4EJB規(guī)范3.4.1EJB技術(shù)概述3.4.2會(huì)話Bean3.4.3實(shí)體Bean3.4.4消息驅(qū)動(dòng)Bean什么是EJB?EJB一種規(guī)范定義:EJB結(jié)構(gòu)師開(kāi)發(fā)和配置基于組件的分布式商務(wù)應(yīng)用程序的一種組件結(jié)構(gòu)。能夠?yàn)槠髽I(yè)應(yīng)用程序提供業(yè)務(wù)邏輯和數(shù)據(jù)訪問(wèn)邏輯支持。3.4.1EJB技術(shù)概述EJB與JavaBean區(qū)別:組件形式不同開(kāi)發(fā)包不同目標(biāo)不同其他3.4.1EJB技術(shù)概述EJB的發(fā)展史1998年3月,推出EJB1.0版EJB1.1版于1999年末發(fā)布EJB2.0版于2001年8月發(fā)布EJB2.1版于2003年11月發(fā)布EJB3.0版于2006年發(fā)布3.4.1EJB技術(shù)概述EJB容器3.4.1EJB技術(shù)概述EJB容器的作用(EJB3.0)EJB容器同時(shí)管理多個(gè)EJB負(fù)責(zé)EJB遷入、遷出內(nèi)存及EJB實(shí)例化EJB依賴容器來(lái)獲取它的資源需求EJB3.0通過(guò)以下三種機(jī)制與容器交互:回調(diào)方法EJBContextJava命名和目錄接口(JNDI)3.4.1EJB技術(shù)概述EJB角色:EJB提供者:創(chuàng)建Bean。應(yīng)用程序組裝者:將Bean組裝為可部署的應(yīng)用程序單元。應(yīng)用程序部署者:“部署”組裝的企業(yè)應(yīng)用程序。EJBServer提供者:廠商。EJB容器提供者:協(xié)助提供EJB工具和運(yùn)行時(shí)支持。系統(tǒng)管理員:職責(zé)包括企業(yè)系統(tǒng)運(yùn)行和分布式網(wǎng)絡(luò)環(huán)境的維護(hù),包括EJBServer和EJB容器。3.4.1EJB技術(shù)概述EJB組件類型會(huì)話Bean實(shí)體Bean消息驅(qū)動(dòng)Bean3.4.1EJB技術(shù)概述會(huì)話Bean無(wú)狀態(tài)會(huì)話bean:提供獨(dú)立的服務(wù)不維持客戶端的狀態(tài)可互換是同步的只在內(nèi)存中保存,EJB服務(wù)器崩潰后不再保存3.4.1EJB技術(shù)概述有狀態(tài)會(huì)話Bean提供會(huì)話的交互存儲(chǔ)客戶端的行為狀態(tài)不可互換是同步的在內(nèi)存中維持,EJB服務(wù)器崩潰后不再保存,除非配置failover(故障恢復(fù))3.4.1EJB技術(shù)概述會(huì)話EJB對(duì)比示例無(wú)狀態(tài)會(huì)話Bean查看列車時(shí)刻的EJB查詢?cè)捹M(fèi)清單的EJB管理信用卡,檢查客戶信用卡使用歷史有狀態(tài)會(huì)話Bean管理在線測(cè)試EJB網(wǎng)站上管理購(gòu)物車的EJB3.4.1EJB技術(shù)概述實(shí)體Bean:是持久性數(shù)據(jù)在內(nèi)存中的體現(xiàn)應(yīng)用服務(wù)器崩潰后能夠恢復(fù)可以支持來(lái)自多個(gè)客戶的并發(fā)訪問(wèn)是同步的每個(gè)實(shí)體Bean對(duì)應(yīng)于關(guān)系數(shù)據(jù)庫(kù)中的單張表;實(shí)體Bean的單個(gè)實(shí)例對(duì)應(yīng)于表中的一行;主鍵類:實(shí)體Bean實(shí)例的唯一標(biāo)識(shí)實(shí)體Bean示例:在訂單管理系統(tǒng)中一個(gè)EJB代表一個(gè)客戶在圖書(shū)館管理系統(tǒng)中一個(gè)EJB代表一本書(shū)在人力資源系統(tǒng)中,一個(gè)EJB代表一個(gè)員工的檔案在在線銀行系統(tǒng)中一個(gè)EJB代表一個(gè)銀行賬戶3.4.1EJB技術(shù)概述消息驅(qū)動(dòng)Bean(MDB):是在消息之間不維持狀態(tài)的異步組件是JMS消息的使用者客戶端發(fā)送消息到消息隊(duì)列,JMS服務(wù)提供者(J2EE服務(wù)器)將消息傳送給消息驅(qū)動(dòng)Bean實(shí)例處理客戶不能直接和MDB交互3.4.1EJB技術(shù)概述消息驅(qū)動(dòng)Bean示例:監(jiān)控應(yīng)用程序錯(cuò)誤隊(duì)列并通過(guò)email發(fā)送錯(cuò)誤EJB處理Servlet網(wǎng)站反饋信息的EJB打印從訂單隊(duì)列到倉(cāng)庫(kù)打印機(jī)的訂單EJB當(dāng)報(bào)告準(zhǔn)備好后,編輯一個(gè)通知并且給用戶發(fā)出通知的EJB3.4.1EJB技術(shù)概述分布式對(duì)象間通信3.4.1EJB技術(shù)概述3.4.1EJB技術(shù)概述(分布式對(duì)象間通信)EJB組件與外部交互過(guò)程3.4.1EJB技術(shù)概述EJB2.0組成部分EnterpriseBean類EJB對(duì)象遠(yuǎn)程接口(業(yè)務(wù)方法接口)Home對(duì)象遠(yuǎn)程Home接口本地接口本地Home接口部署描述文件供應(yīng)商特有文件3.4.1EJB技術(shù)概述EnterpriseBean類業(yè)務(wù)邏輯核心,不包含與網(wǎng)絡(luò)有關(guān)的邏輯功能依照定義的接口及遵守規(guī)則實(shí)現(xiàn)的Java類,能運(yùn)行于任何EJB容器中。(實(shí)現(xiàn)接口)客戶端不直接對(duì)實(shí)際的EnterpriseBean類的實(shí)例進(jìn)行調(diào)用EJB容器管理Bean,當(dāng)發(fā)生某些事件的時(shí)候通知Bean。3.4.1EJB技術(shù)概述所有的Bean類都必須實(shí)現(xiàn)以下接口
publicinterfacejavax.ejb.EnterpriseBeanextendsjava.io.Serializable{}3.4.1EJB技術(shù)概述以下的接口擴(kuò)展了上一個(gè)接口,所以我們通過(guò)實(shí)現(xiàn)這些接口來(lái)編寫(xiě)企業(yè)Bean類會(huì)話Beanjavax.ejb.SessionBean實(shí)體Beanjavax.ejb.EntityBean消息驅(qū)動(dòng)Beanjavax.ejb.MessageDrivenBean3.4.1EJB技術(shù)概述EJB對(duì)象EJB容器提供的請(qǐng)求攔截器稱為“EJB對(duì)象”。3.4.1EJB技術(shù)概述Remote接口定義了EnterpriseBean提供的商業(yè)方法編寫(xiě)Remote接口時(shí)應(yīng)遵循一定的原則:必須繼承EJBObject要遵守RMI-IIOP約束接口中的方法必須拋出RemoteException異常3.4.1EJB技術(shù)概述舉例:packagehello;importjavax.ejb.*;importjava.util.*;importjava.rmi.*;publicinterfaceHelloextendsjavax.ejb.EJBObject{publicStringhello()throwsRemoteException;//商業(yè)方法}3.4.1EJB技術(shù)概述Home對(duì)象EJB對(duì)象通過(guò)Home對(duì)象來(lái)獲得EJB對(duì)象的引用。負(fù)責(zé)對(duì)EJB對(duì)象的實(shí)例化和回收,并管理EJB實(shí)例的生命周期Home對(duì)象由EJB容器自動(dòng)生成,并在所有EJB的客戶間共享。3.4.1EJB技術(shù)概述Home接口需要定義接口來(lái)告訴Home對(duì)象,EJB對(duì)象怎樣被初始化或者被查找。通過(guò)擴(kuò)展javax.ejb.EJBHome來(lái)定義生成、回收、查找EJB對(duì)象的方法。Home接口也擴(kuò)展了java.rmi.Remote,所以Home對(duì)象也是遠(yuǎn)程對(duì)象。3.4.1EJB技術(shù)概述Home接口:支持客戶應(yīng)用創(chuàng)建、刪除或定位EnterpriseBean的實(shí)例。編寫(xiě)Home接口時(shí)應(yīng)遵循一定的原則:必須繼承EJBHome定義的方法要遵守RMI-IIOP約束方法必須拋出RemoteException異常;create方法必須拋出CreateException異常3.4.1EJB技術(shù)概述packagehello;importjavax.ejb.*;importjava.util.*;importjava.rmi.*;publicinterfaceHelloHomeextendsjavax.ejb.EJBHome{publicHellocreate()throwsCreateException,RemoteException;}3.4.1EJB技術(shù)概述Home對(duì)象和Home接口3.4.1EJB技術(shù)概述對(duì)象數(shù)目對(duì)于一個(gè)EJB大多數(shù)容器實(shí)現(xiàn)一個(gè)Home對(duì)象有些容器實(shí)現(xiàn)一個(gè)EJB對(duì)象,有些實(shí)現(xiàn)多個(gè)(單線程的)在實(shí)例池中維護(hù)多個(gè)Bean實(shí)例3.4.1EJB技術(shù)概述本地接口同一進(jìn)程中調(diào)用EJB擴(kuò)展javax.ejb.EJBLocalObject。本地Home接口,擴(kuò)展javax.ejb.EJBLocalHome本地接口可與“遠(yuǎn)程”接口共存。本地Bean可互相通信3.4.1EJB技術(shù)概述本地接口packagehello;importjavax.ejb.*;importjava.util.*;publicinterfaceHelloLocalextendsjavax.ejb.EJBLocalObject{publicStringhello();}3.4.1EJB技術(shù)概述本地Home接口packagehello;importjavax.ejb.*;importjava.util.*;publicinterfaceHelloLocalHomeextendsjavax.ejb.EJBLocalHome{publicHelloLocalcreate()throwsCreateException;}3.4.1EJB技術(shù)概述部署描述文件聲明機(jī)制,處理容器與EJB組件間的交互容器將讀取部署描述信息以了解應(yīng)如何處理事務(wù)、持續(xù)和訪問(wèn)控制預(yù)定義格式3.4.1EJB技術(shù)概述部署描述信息:EJB的類型商業(yè)接口主接口EJBBean類EJB方法的事務(wù)性屬性部署一個(gè)EJB組件,必須將它的遠(yuǎn)程、本地和EJBBean類文件及XML部署描述信息封裝到j(luò)ar文件中特定名稱:META-INF/ejb-jar.xml3.4.1EJB技術(shù)概述EJB容器檢查部署描述符,并完成:Bean的管理和生命周期持久性要求(僅限實(shí)體Bean)事務(wù)處理要求安全性要求3.4.1EJB技術(shù)概述部署描述文件舉例<?xmlversion="1.0"encoding="UTF-8"?><!DOCTYPEejb-jarPUBLIC"-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//EN"""><ejb-jar><enterprise-beans><session><display-name>Hello</display-name><ejb-name>Hello</ejb-name><home>hello.HelloHome</home><remote>hello.Hello</remote><local-home>hello.HelloLocalHome</local-home><local>hello.HelloLocal</local><ejb-class>hello.HelloBean</ejb-class><session-type>Stateless</session-type><transaction-type>Container</transaction-type> </session> </enterprise-beans><assembly-descriptor><container-transaction><method><ejb-name>Hello</ejb-name><method-name>*</method-name></method><trans-attribute>Required</trans-attribute></container-transaction></assembly-descriptor> </ejb-jar>3.4.1EJB技術(shù)概述供應(yīng)商特有文件每個(gè)EJB服務(wù)器供應(yīng)商都不盡相同,他們各自都有一些獨(dú)特的增值特性。以Jboss為例: <?xmlversion="1.0"encoding="UTF-8"?> <!DOCTYPEjbossPUBLIC'-//JBoss//DTDJBOSS3.0//EN'''><jboss><enterprise-beans><session><ejb-name>Hello</ejb-name><jndi-name>Hello</jndi-name><local-jndi-name>HelloLocal</local-jndi-name></session></enterprise-beans></jboss>3.4.1EJB技術(shù)概述EJB應(yīng)用開(kāi)發(fā)編寫(xiě)EJB應(yīng)用步驟:1.編寫(xiě)Home,Remote接口和Bean的實(shí)現(xiàn)代碼2.編寫(xiě)部署描述文件:ejb-jar.xml等,將其部署到服務(wù)器中,同時(shí)設(shè)定JNDI名稱;也可以通過(guò)EJB實(shí)現(xiàn)類中的部署標(biāo)記來(lái)指定EJB部署信息。3.編寫(xiě)客戶端程序,將Home和Remote接口打包成jar文件發(fā)送給客戶端,客戶端將其添加到構(gòu)建路徑,調(diào)用EJB3.4.1EJB技術(shù)概述EJB的jar文件當(dāng)把所有的文件都已經(jīng)完成,可以使用jar命令生成最后的jar文件。EJB舉例參考:hello源代碼:HelloHome.java源代碼:HelloLocal.java源代碼:HelloBean.java源代碼:Hello.java源代碼:ejb-jar.xml源代碼:jboss.xml源代碼:HelloLocalHome.java測(cè)試客戶端:HelloTestClient1.javaHello.javapackagehello;importjavax.ejb.*;importjava.util.*;importjava.rmi.*;publicinterfaceHelloextendsjavax.ejb.EJBObject{publicStringhello()throwsRemoteException;}HelloBean.javapackagehello;importjavax.ejb.*;publicclassHelloBeanimplementsSessionBean{SessionContextsessionContext;publicvoidejbCreate()throwsCreateException{}publicvoidejbRemove(){}publicvoidejbActivate(){}publicvoidejbPassivate(){}publicvoidsetSessionContext(SessionContextsessionContext){this.sessionContext=sessionContext;}publicStringhello(){Stringresult;result="hello,Iamyourfriend@!";System.out.println(result);returnresult;}}HelloHome.javapackagehello;importjavax.ejb.*;importjava.util.*;importjava.rmi.*;publicinterfaceHelloHomeextendsjavax.ejb.EJBHome{publicHellocreate()throwsCreateException,RemoteException;}HelloLocal.javapackagehello;importjavax.ejb.*;importjava.util.*;publicinterfaceHelloLocalextendsjavax.ejb.EJBLocalObject{publicStringhello();}HelloLocalHome.javapackagehello;importjavax.ejb.*;importjava.util.*;publicinterfaceHelloLocalHomeextendsjavax.ejb.EJBLocalHome{publicHelloLocalcreate()throwsCreateException;}HelloTestClient1.javapackagehello;importjavax.naming.*;importjavax.rmi.PortableRemoteObject;importjava.rmi.*;importjavax.ejb.*;publicclassHelloTestClient1extendsObject{publicstaticvoidmain(String[]args){HelloHomehelloHome=null;Hellohello=null;HelloTestClient1.java(續(xù))java.util.HashtableJNDIParm=newjava.util.Hashtable();JNDIParm.put(Context.PROVIDER_URL,"localhost");JNDIParm.put(Context.INITIAL_CONTEXT_FACTORY,"erfaces.NamingContextFactory");try{//初始化JNDI上下文環(huán)境,因?yàn)榭蛻舳瞬恢繨BOSS的環(huán)境javax.naming.Contextctx=newInitialContext(JNDIParm);//檢索指定的對(duì)象(Hello.jar)Objectref=ctx.lookup("Hello");
//強(qiáng)制轉(zhuǎn)換為所需類型的對(duì)象helloHome=(HelloHome)PortableRemoteObject.narrow(ref,HelloHome.class);//通過(guò)home對(duì)象創(chuàng)建一個(gè)組件接口對(duì)象hello=helloHome.create();//通過(guò)組件接口對(duì)象調(diào)用業(yè)務(wù)方法System.out.println(hello.hello());hello.remove();}catch(Exceptionex){System.out.println(ex);}}}ejb-jar.xml<?xmlversion="1.0"?><!DOCTYPEejb-jarPUBLIC'-//SunMicrosystems,Inc.//DTDEnterpriseJavaBeans2.0//EN'''><ejb-jar>…<enterprise-beans><session><ejb-name>HelloBean</ejb-name><home>HelloHome</home><remote>Hello</remote><ejb-class>HelloBean</ejb-cla
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024高考地理一輪復(fù)習(xí)專練70滾動(dòng)訓(xùn)練三必修一+必修二+必修三專練1~專練69含解析新人教版
- 2025高考數(shù)學(xué)考點(diǎn)剖析精創(chuàng)專題卷五-數(shù)列【含答案】
- 2024年湖北城市建設(shè)職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測(cè)驗(yàn)歷年參考題庫(kù)(頻考版)含答案解析
- Unit2復(fù)習(xí)卷2024-2025學(xué)年人教版八年級(jí)英語(yǔ)上冊(cè)
- 四年級(jí)語(yǔ)文上冊(cè)第一單元第3課現(xiàn)代詩(shī)二首品讀釋疑課件新人教版
- 九年級(jí)歷史上冊(cè)第七單元工業(yè)革命和國(guó)際共產(chǎn)主義運(yùn)動(dòng)的興起第21課馬克思主義的誕生和國(guó)際共產(chǎn)主義運(yùn)動(dòng)的興起課件新人教版
- 常用介詞(專項(xiàng)訓(xùn)練)-2024-2025學(xué)年人教PEP版英語(yǔ)六年級(jí)下冊(cè)
- 二零二五年度廠房租賃及知識(shí)產(chǎn)權(quán)保護(hù)合同3篇
- 2024年江西財(cái)經(jīng)職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024年江西新能源科技職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測(cè)試歷年參考題庫(kù)含答案解析
- 2024-2025學(xué)年成都青羊區(qū)九上數(shù)學(xué)期末考試試卷【含答案】
- 2025年競(jìng)聘醫(yī)院內(nèi)科醫(yī)生崗位演講稿模版(3篇)
- 虛擬貨幣地址分析技術(shù)的研究-洞察分析
- 綠色供應(yīng)鏈管理制度內(nèi)容
- 心理學(xué)基礎(chǔ)知識(shí)考試參考題庫(kù)500題(含答案)
- 電力智慧檢修安全運(yùn)行三維可視化管理平臺(tái)建設(shè)方案
- 一年級(jí)數(shù)學(xué)(上)計(jì)算題專項(xiàng)練習(xí)集錦
- 消防安全應(yīng)急預(yù)案下載
- 《北航空氣動(dòng)力學(xué)》課件
- 附件:財(cái)政業(yè)務(wù)基礎(chǔ)數(shù)據(jù)規(guī)范(3.0版)
- 電商公司售后服務(wù)管理制度
評(píng)論
0/150
提交評(píng)論