1. 程式人生 > >EJB及其基本分類

EJB及其基本分類

定義:     

       EJB是sun的JavaEE伺服器端元件模型,設計目標與核心應用是部署分散式應用程式。簡單來說就是把已經編寫好的程式(即:類)打包放在伺服器上執行。憑藉java跨平臺的優勢,用EJB技術部署的分散式系統可以不限於特定的平臺。EJB (Enterprise JavaBean)是J2EE(javaEE)的一部分,定義了一個用於開發基於元件的企業多重應用程式的標準。其特點包括網路服務支援和核心開發工具(SDK)。 在J2EE裡,Enterprise Java Beans(EJB)稱為Java 企業Bean,是Java的核心程式碼,分別是會話Bean(Session Bean),實體Bean(Entity Bean)和訊息驅動Bean(MessageDriven Bean)。

      EJB在架構中所處的位置如上圖,EJB在J2EE開發中的詳細:

     

分類:

           

    Session Bean (會話bean)

        什麼叫會話(Session)即從客戶端獲取的EJB物件開始,然後呼叫的EJB的方法,直到客戶端生命週期結束,或客戶端釋放了EJB物件為止,稱為一次會話

       會話Bean可以執行業務邏輯操作,比如註冊使用者、訂單登記、資料庫操作

        什麼事物件的狀態?即其例項變數。

        什麼叫有狀態的會話Bean?(Stateful Session Bean  )

         即EJB能夠為同一個客戶端在多次請求之間保持狀態資訊。

       如下圖

        

    什麼是無狀態會話(Stateless Session Bean)?

    並非說EJB不能存在狀體,而是說EJB容器不會對EJB的狀態做管理;

    容器會使用實力池的方式,甚至單例的方式來實現無狀態的Session Bean。

     因為EJB容器不會對Stateless Session Bean 的狀態進行管理,所以它的效能要比Stateful Session Bean 的好。

 下面從spring裡對比有狀態與無狀態的區別

     

EJB的呼叫方式

             包括本地呼叫和遠端呼叫;

          遠端客戶端--客戶端與其呼叫的EJB物件不在同一個JVM進行中;

                                它可以是web元件、應用客戶端、或其它的企業Bean;

                                對遠端客戶端來說,企業Bean的位置是透明的;

                                為了建立一個能夠被遠端客戶端訪問的企業Bean,你必須用@Remote註解來定義這些企業Bean。        

本地客戶端--客戶端與其呼叫的EJB物件在同一個JVM程序中;

                       它可能是一個web元件或別的企業Bean;

                        為了建立一個能夠被本地訪問的企業Bean,你必須用@local定義這些企業Bean。

                       一個企業Bean介面可以同時被定義為@Remote和@Local

遠端訪問呼叫方式

    

本地訪問方式

      

什麼情況下用EJB?

    1、分散式。分散式物件之間互相協作,完成特定的業務功能。分散式物件之間應事先分佈透明性,即在客戶端呼叫時無需指定分散式物件的位置(通過配置來解決)。     2、分散式物件之間的事務支援(RMI不支援事務)     3、應用程式需要支援不同的客戶端,只需要少量的程式碼,就可以讓遠端客戶端訪問企業Bean。

什麼情況下不使用EJB?

  1、較為簡單的純Web 應用開發,不需要用EJB。
    2、需要與其他服務程式配合使用的應用,但呼叫或返回的自定義的網路協議可以解決的應用程式,不需要使用EJB。
    3、較多人併發訪問的C/S 結構的應用程式,儘量不要使用EJB。