會話bean就像上篇文章中提到的它的目的是提供1種旨在封裝業務服務的組件技術。通常使用常規的Java接口來定義該服務支持的操作,把它作為會話bean的業務接口,客戶端通過它與bean進行交互。平時做開發的時候好像沒有定義過接口,而是直接將會話bean拿過來用。實現會話bean比常規的Java類稍微復雜1點,如果存在1個業務接口,那末它將會實現這個接口。但是由因而EJB組件模型的1部份,因此該bean可以訪問1些列廣泛容器服務以實現業務服務。名稱“會話bean”的意義在于客戶端訪問它們和與它們進行交互的方式。1旦客戶端以http://www.vxbq.cn/server/取得會話bean的援用,它可以利用該bean啟動1個會話并調用其業務操作。
有3種類型的會話bean:無狀態的(stateless)、有狀態的(stateful)和單例(singleton)。
與無狀態會話bean的交互以啟動業務方法調用作為開始,在方法調用完成式結束。不會有狀態從業務操作轉移到另外一個業務操作。與有狀態會話bean的交互變得更像是1次談話,它開始于客戶端獲得會話bean的援用的時候,然后在客戶端顯示地把該bean釋放會http://www.vxbq.cn/server/以后結束。有狀態會話bean的業務操作可以在調用之間保持bean實例的狀態。在具體描寫每種類型的會話bean時,將更加詳細地討論關于這類交互樣式實現的區分斟酌。
EJB3.1中引入的單例會話bean,可以認為是無狀態和有狀態會話bean的混合。由于所有的客戶端都同享相同的單例bean實例,所以在方法調用之間同享狀態成為可能,但是單例會話bean缺少有狀態會話bean的對話協議和可移動性。單例會話bean 的狀態還引發了并發性的問題,當決定是不是使用這類樣式的會話bean時,需要斟酌到這個問題。
客戶端從不直接與1個會話bean實例進行交互。客戶端會援用和調用1個http://www.vxbq.cn/server/所提供的業務接口的實現。這個實現類充當了底層bean實現的代理。將客戶端與bean解耦和,從而允許http://www.vxbq.cn/server/截獲方法調用以提供bean需要的服務,如事務管理。它還允許http://www.vxbq.cn/server/必要時優化和重用會話bean類的實例。