企業Bean運行在EJB容器中。企業Bean實際上就是一個封裝了業務邏輯的Java類。
需要使用EJB的N個理由:
1,分布式!分布式對象之間的相互協作,完成特定的業務功能。分布式對象之間應實現分布透明性(或位置透明性)。即在客戶端代碼中無需指定分布式對象的位置(通過配置來解決)。
2,分布式對象之間的事務支持(RMI不支持事務)。
3,應用程序需要支持不同的客戶端,只需要少量的代碼,就可以讓遠程客戶端訪問到企業Bean。
so,如果你的應用需要分布式部署,+分布式對象需要支持事務+關鍵業務邏輯需要能夠支持不同類型的客戶端,那麼EJB將是很好的選擇。
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
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 客戶端才可以訪問到。