會話Bean是可以被客戶端直接調用的EJB組件。客戶端可以是Web應用程序組件(JSP、JSF、Servlet),也可以是命令行或Swing GUI桌面應用程序。那麼什麼事會話Bean、如何開發一個無狀態會話bean、開發一個有狀態會話bean、EJB調用機制和會話bean生命週期是什麼,等。
1、會話Bean
會話Bean是一個用於處理Java EE程序業務邏輯的EJB組件,主要用於編寫業務邏輯,維持客戶端的會話狀態,以及模擬一個或多個業務操作的後臺處理或用戶任務。簡而言之:會話就是在有線的時間週期內,客戶端和服務器之間的連接。
會話Bean又可以分爲無狀態會話Bean和有狀態會話Bean。以滿足不同的應用需要。
在開發上,所有的會話Bean都分爲兩部分,一個是接口,一個是Bean實例類。其中接口可以分爲本地接口和遠程接口。客戶端不能直接訪問Bean實現類,而是通過業務接口使用會話Bean。
如下簡圖:
簡圖1-1
會話Bean具有以下一些特徵:
- 併發和線程安全
- 遠程處理和Web服務
- 事務和安全管理
- 計時器服務和攔截器
與所有的EJB3.0 bean一樣,會話bean也是遵守某些規則的POJO。下面是應用於所有會話bean的設計規則:
- 會話bean必須至少一個業務接口(本地的、遠程的,或同時提供這兩個)
- 會話bean實現類必須是具體的。
- bean實現類中必須具有無參的構造方法。
- 會話bean類可以是另一個會話bean或其他POJO的子類。
- 可以在bean類或者超類中定義業務方法和生命週期回調方法。
- 業務方法名稱不能以ejb開頭。
在EJB3.0中,不要求同時實現遠程和本地接口,但實現同時實現兩者是比較好的做法。其優點如下:
- 遠程接口(remote interface)定義了會話bean的業務方法,這些方法可以被來自EJB容器之外的應用訪問。
- 本地接口(local interface)同樣定義了會話bean的業務方法,這些方法可以被同處於EJB容器內的其他應用使用。因爲local接口允許bean之間直接通過內存交互,沒有分佈式對象協議的開銷,從而改善了性能。
2、無狀態會話bean與有狀態會話bean的不同
維護會話狀態的bean會存儲前一次信息交換的數據,它就是有狀態會話bean。無狀態會話bean不需要維護任何狀態和數據信息。