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。