熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java核心技術 >> 正文

企業版JavaBean討論

2013-11-23 19:27:22  來源: Java核心技術 

  安裝EJB運行和開發環境
  EJB必須要在EJB容器內執行所以我們必須安裝一個符合JEE標准的EJB容器為了幫助我們部署自己的EJB我們還需要一個部署工具來自Sun的對JEE的參考實現包含了一個EJB容器和一個EJB部署工具這個JEE參考實現能夠在Sun發布的JEE開發工具包裡找到
  
  JEE開發包要依靠Java SDK標准版(Standard EditionJSE)的開發包所以你也需要把它下載下來你需要JSE SDK 來運行參照實現的JEE服務器並創建和運行EJB應用程序
  
  一旦你下載了開發包你就要安裝它們並為每個開發包選擇理想的位置你要先定義一個叫作JAVA_HOME的環境變量並將它指向JSE開發包的安裝目錄然後定義一個叫做JEE_HOME的環境變量並把它指向JEE開發包的安裝目錄
  
  現在你就准備好開始編寫你的EJB了
  
  編寫一個簡單會話EJB
  開發一個EJB所涉及的大多數步驟和概念和我們開發傳統的Java對象(plainold Java objectPOJO)所使用的是相同的只有少數的不同之處下面就是開發和部署EJB的一個基本步驟
  
   為你的EJB編寫類和接口
  
   為你的EJB編寫部署描述符
  
   將EJB和相關聯的文件打包進一個jar文件
  
   部署EJB
  
  會話bean有兩種不同的類型在我們開始編寫代碼之前讓我們來看看它們之間的相同之處和不同之處
  
  狀態會話EJB概述
  狀態會話EJB會在單個會話期間維持一種和客戶端的對話狀態這就表示狀態會話EJB能夠在單個會話期間維持從一個客戶端跨越多個調用的實例變量
  
  一旦客戶端完成了同EJB的交互操作而且EJB容易刪除了EJB那麼EJB的會話就會結束用於EJB的所有狀態數據都會被刪除
  
  無狀態會話EJB概述
  無狀態會話EJB不會為每個單獨的客戶端都維持一個對話狀態對無狀態會話EJB的每次調用都應該被當作是對一個全新的對象實例的請求因為任何實例-變量狀態都會在調用之間丟失
  
  無狀態會話EJB不會被EJB容器保存到第二存儲地裡所以程序員必須要知道每個客戶端的每次調用之間的所有數據都是瞬時的無狀態會話EJB的瞬時特性允許EJB容器重復使用EJB實例因此常常會優化EJB的性能
  
  會話Bean之間的關系
  圖A說明了EJB客戶端EJB容器和幾個會話EJB之間的關系
  

  會話EJB包括至少三個強制類/接口第一個強制類/接口是Component接口Component接口定義了一些對EJB來說是可視的商業方法它必須擴展javaxejbEJBObject
  
  這裡我們會舉個例子實現一個非常簡單的無狀態會話EJB它會在一個叫作getBalance的方法裡返回帳目結算我們Component接口的代碼如下
  package comjeffhansonejb;
  
  public interface Account extends javaxejbEJBObject javarmiRemote
  {
  public String getBalance() throws javarmiRemoteException;
  }
  
  第二個強制類/接口是Home接口Home接口被EJB客戶端用來獲取對Bean的組件接口的參照它必須擴展javaxejbEJBHome我們Home接口的代碼如下
  package comjeffhansonejb;
  
  public interface AccountHome extends javaxejbEJBHome
  {
  public Account create() throws javaxejbCreateException
                 javarmiRemoteException;
  }
  
  第三個強制類/接口是Enterprise Bean類Enterprise Bean類為Component接口和Home接口提供實現用於會話EJB的Enterprise Bean類必須要實現javaxejbSessionBean接口我們Enterprise Bean類的代碼如下
  package comjeffhansonejb;
  
  public class AccountBean
  implements javaxejbSessionBean
  {
  private javaxejbSessionContextctx;
  
  public void ejbActivate() {}
  
  public void ejbCreate() {}
  
  public void ejbRemove() {}
  
  public void ejbPassivate() {}
  
  public void setSessionContext(javaxejbSessionContextctx)
  { 
   thisctx = ctx;
  }
  
  // business method
  public String getBalance()
   throws javarmiRemoteException
  {
   String balance = dataObjgetAccountBalance();
   return(balance);
  }
  }
  
  結語
  在本文裡我們通過帶你嘗試了一個簡單的無狀態會話EJB實現的細節盡力減輕了你可能有的對創建自己第一個EJB的恐懼感在下一篇文章裡我們將探討實體bean的細節以及它們如何被用來封裝數據實體即商業對象訪問的內容
From:http://tw.wingwit.com/Article/program/Java/hx/201311/26895.html
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.