top
Loading...
EJB系列教程之三

一、Session beans簡單介紹

Session beans通常用于一個客戶端的會話。Session beans中的事件通常執行為客戶端設置的任務和進程。它僅僅存在在客戶連接的過程中,也可以說,session beans體現EJB server的Client , 它通常為Client提供服務。除了你必須用到持續不變的數據外,通常使用session beans。

二、兩種類型的Session beans

有態Session beans和無態Session beans。

有態Session beans用于單個client,用來保持這個client的狀態信息。例如,網上購物中的用戶定單就是一個session beans。客戶從物品列表中選取物品到定單中。最后,客戶要通過它來計算總價,付款。

無態Session beans用于多個client,它不由單個client所控制。例如:聊天室中,聊天人的列表就是一個無態Session beans,因為每加一個人,該列表都會變化的。

三、生命周期

(1)有態Session beans當client調用Session bean 的home接口的create()事件的時候就開始存在。Container就開始建立一個新的session bean實例,并且初始化,返回信息給clinet端。在這個過程中,Container調用sessionbean接口的setSessionContext()事件和ejbCreate()事件。

當一個Client通過遠程或者HOME接口調用remove()事件時,Container將調用ejbRemove()事件,以后,這個bean的生命周期就結束了。此時,如果client試著再去調用beans的事件,將產生一個java.rmi.NoSuchObjectException異常。

(2)無態Session beans當client調用Session bean 的home接口的create()事件的時候就開始生存。Container就開始建立一個新的session bean實例,返回信息給clinet端。在這個過程中,Container調用sessionbean接口的setSessionContext()事件和ejbCreate()事件。這個新的bean就被加到一個“池”中,供Client端用。由于不帶任何Client端特有的狀態,所以這個“池”中的任何beans都可以被client端用。

當Container從“池”中移掉一個對象的時候,將調用bean對象的ejbRemove事件。需要注意的是:調用create()和remove()事件,并不能從無態Session beans的 "池"中增加和移走無態Session beans。在整個過程中,無態Session beans的生命周期是由Container來控制的。

作者:http://www.zhujiangroad.com
來源:http://www.zhujiangroad.com
北斗有巢氏 有巢氏北斗