EJB(Enterprise Java Bean)概述
一,什麼情況下需要企業Bean
企業Bean運行在EJB容器中。企業Bean實際上就是一個封裝了商務邏輯的Java類。
需要使用EJB的N個理由:
1,分布式!分布式對象之間的相互協作,完成特定的業務功能。分布式對象之間應實現分布透明性(或位置透明性)。即在用戶端代碼中無需指定分布式對象的位置(通過配置來解決)。
2,分布式對象之間的事務支援(RMI不支援事務)。
3,應用程式需要支援不同的用戶端,只需要少量的代碼,就可以讓遠程用戶端訪問到企業Bean。
so,如果你的應用需要分布式部署,+分布式對象需要支援事務+關鍵商務邏輯需要能夠支援不同類型的用戶端,那麼EJB將是很好的選擇。
二,EJB的基本分類1,Enterprise Bean
1,Session Bean (會話Bean) :會話Bean可以執行商務邏輯操作,比如註冊使用者,訂單登記,資料庫操作等等。
(
會話(session):即從用戶端擷取EJB對象開始,然後調用EJB方法(可以多次),直到用戶端生 命周期結束,或用戶端釋放了EJB對象為止,成為一次會話。隨著會話的終止,EJB對象也有可能會被EJB容器銷毀。
對象的狀態:對象的狀態是由其執行個體變數的值組成的。
)
Stateless Session Bean——無狀態會話Bean
(
並非是說EJB不能存在狀態,而是說EJB容器不會對EJB的狀態做管理
容器會使用執行個體池的方式,甚至單例的方式來實現無狀態Session Bean
因為EJB容器不會對stateless session bean 的狀態進行管理,所以它的效能要比stateful session bean 的好
)
Steteful Session Bean——有狀態的會話Bean
(
有狀態的會話Bean:即EJB能夠為同一個用戶端在多次請求(方法調用)之間保持狀態資訊。
)
2, Message Driven Bean(MDB)——訊息驅動Bean,基於JMS
2,Persistence——持久化
Entity Bean——實體Bean
三,定義用戶端訪問的介面
用戶端僅通過商務邏輯Bean所定義的介面來訪問商務邏輯(跟具體實現無關)。
當在開發企業Bean之前,首先要做的第一個決定是:EJB要支援什麼樣的用戶端?因為不同 的用戶端,其訪問方式也將不同。
1,遠程用戶端——用戶端與其調用的EJB對象不在同一個JVM進程中
一個遠程用戶端有如下特性:
1,它可以運行在跟企業Bean不同的機器或不同的JVM進程上
2,它可以是web組件,應用用戶端,或其他企業Bean
3,對遠程用戶端來說,企業Bean的位置是透明的
4,為了建立一個能夠被遠程用戶端訪問的企業Bean,必須用@Remote註解來定義這些企業Bean。
2,本地用戶端——用戶端與其調用在同一個JVM進程中
本地用戶端具有如下特性:
1,它必須與企業Bean運行在同一個JVM中
2,它可能是一個Web組件或別的企業Bean
3,為了建立一個能夠被本地訪問的企業Bean,你必須用@Local註解來定義這些企業Bean
4,一個企業Bean介面可以同時被定義為@Remote和@Local
3,WebService用戶端
webservice用戶端可以訪問無狀態會話Bean介面,只有在商務邏輯方法被標識為@webMethod的時候,web service 用戶端才可以訪問到。