posts - 36,comments - 31,trackbacks - 0

          ?? 在本文里,我們將對企業(yè)版JavaBean進行討論,以幫助消除你對創(chuàng)建自己第一個EJB的恐懼感,并幫助你步入EJB開發(fā)的世界。

             安裝EJB運行和開發(fā)環(huán)境

            EJB必須要在EJB容器內(nèi)執(zhí)行。所以,我們必須安裝一個符合J2EE標準的EJB容器。為了幫助我們部署自己的EJB,我們還需要一個部署工具。來自Sun的、對J2EE的參考實現(xiàn)包含了一個EJB容器和一個EJB部署工具。這個J2EE參考實現(xiàn)能夠在Sun發(fā)布的J2EE開發(fā)工具包里找到。

            J2EE開發(fā)包要依靠Java 2 SDK、標準版(Standard EditionJ2SE)的開發(fā)包,所以你也需要把它下載下來。你需要J2SE SDK 來運行參照實現(xiàn)的J2EE服務(wù)器,并創(chuàng)建和運行EJB應(yīng)用程序。

            一旦你下載了開發(fā)包,你就要安裝它們,并為每個開發(fā)包選擇理想的位置。你要先定義一個叫作JAVA_HOME的環(huán)境變量,并將它指向J2SE開發(fā)包的安裝目錄。然后,定義一個叫做J2EE_HOME的環(huán)境變量,并把它指向J2EE開發(fā)包的安裝目錄。

            現(xiàn)在你就準備好開始編寫你的EJB了。

             編寫一個簡單會話EJB

            開發(fā)一個EJB所涉及的大多數(shù)步驟和概念和我們開發(fā)傳統(tǒng)的Java對象(plain-old Java objectPOJO)所使用的是相同的,只有少數(shù)的不同之處。下面就是開發(fā)和部署EJB的一個基本步驟:

            1. 為你的EJB編寫類和接口。
            2. 為你的EJB編寫部署描述符。
            3. EJB和相關(guān)聯(lián)的文件打包進一個jar文件。
            4. 部署EJB

            會話bean有兩種不同的類型。在我們開始編寫代碼之前,讓我們來看看它們之間的相同之處和不同之處。

             狀態(tài)會話EJB概述

            狀態(tài)會話EJB會在單個會話期間維持一種和客戶端的對話狀態(tài)。這就表示狀態(tài)會話EJB能夠在單個會話期間,維持從一個客戶端跨越多個調(diào)用的實例變量。

            一旦客戶端完成了同EJB的交互操作,而且EJB容易刪除了EJB,那么EJB的會話就會結(jié)束,用于EJB的所有狀態(tài)數(shù)據(jù)都會被刪除。

             無狀態(tài)會話EJB概述

            無狀態(tài)會話EJB不會為每個單獨的客戶端都維持一個對話狀態(tài)。對無狀態(tài)會話EJB的每次調(diào)用,都應(yīng)該被當(dāng)作是對一個全新的對象實例的請求。因為任何實例-變量狀態(tài)都會在調(diào)用之間丟失。

            無狀態(tài)會話EJB不會被EJB容器保存到第二存儲地里,所以程序員必須要知道:每個客戶端的每次調(diào)用之間的所有數(shù)據(jù)都是瞬時的。無狀態(tài)會話EJB的瞬時特性允許EJB容器重復(fù)使用EJB實例,因此常常會優(yōu)化EJB的性能。

             會話Bean之間的關(guān)系

            圖A說明了EJB客戶端、EJB容器和幾個會話EJB之間的關(guān)系。

            會話EJB包括至少三個強制類/接口。第一個強制類/接口是Component接口。Component接口定義了一些對EJB來說是可視的商業(yè)方法,它必須擴展javax.ejb.EJBObject

            這里我們會舉個例子,實現(xiàn)一個非常簡單的無狀態(tài)會話EJB,它會在一個叫作getBalance的方法里返回帳目結(jié)算。我們Component接口的代碼如下:

            package com.jeffhanson.ejb;

            public interface Account extends javax.ejb.EJBObject, java.rmi.Remote
            {
             public String getBalance() throws java.rmi.RemoteException;
            }

            第二個強制類/接口是Home接口。Home接口被EJB客戶端用來獲取對Bean的組件接口的參照,它必須擴展javax.ejb.EJBHome。我們Home接口的代碼如下:

            package com.jeffhanson.ejb;

            public interface AccountHome extends javax.ejb.EJBHome
            {
            ? public Account create() throws javax.ejb.CreateException,
          ????????????????????????????????? java.rmi.RemoteException;
            }

            第三個強制類/接口是Enterprise Bean類。Enterprise Bean類為Component接口和Home接口提供實現(xiàn)。用于會話EJBEnterprise Bean類必須要實現(xiàn)javax.ejb.SessionBean接口。我們Enterprise Bean類的代碼如下:

            package com.jeffhanson.ejb;

            public class AccountBean
          ?
            implements javax.ejb.SessionBean
           {
          ?? private javax.ejb.SessionContextctx;
          ?
          ?? public void ejbActivate() {}
          ?
          ?? public void ejbCreate() {}

          ?? public void ejbRemove() {}
          ?
          ?? public void ejbPassivate() {}
          ?
          ?? public void setSessionContext(javax.ejb.SessionContextctx)
          ?? {??
          ????? this.ctx = ctx;
          ?? }
          ?
          ?? // business method
          ?? public String getBalance()
          ????? throws java.rmi.RemoteException
          ?? {
          ????? String balance = dataObj.getAccountBalance();
          ????? return(balance);
          ?? }
           }

             結(jié)束語

            在本文里,我們通過帶你嘗試了一個簡單的無狀態(tài)會話EJB實現(xiàn)的細節(jié),盡力減輕了你可能有的對創(chuàng)建自己第一個EJB的恐懼感。
          posted on 2006-07-27 23:35 心隨我動 閱讀(260) 評論(0)  編輯  收藏 所屬分類: EJB

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          網(wǎng)站流量統(tǒng)計:
          澳大利亞 ABC 在線英語廣播電臺
          主站蜘蛛池模板: 抚顺县| 永德县| 明光市| 商南县| 济宁市| 澄城县| 时尚| 武夷山市| 江口县| 彰化县| 南阳市| 马尔康县| 呼和浩特市| 宁远县| 博罗县| 滁州市| 长治市| 伽师县| 乐山市| 花垣县| 四平市| 塔城市| 竹溪县| 常山县| 瓮安县| 榆社县| 韩城市| 永康市| 华宁县| 沈阳市| 咸宁市| 屯门区| 磐安县| 浦县| 丘北县| 江都市| 肥西县| 分宜县| 临邑县| 威海市| 胶州市|