一、session beans簡(jiǎn)單介紹
Session beans通常用于一個(gè)客戶端的會(huì)話。Session beans中的事件通常執(zhí)行為客戶端設(shè)置的任務(wù)和進(jìn)程。它僅僅存在在客戶連接的過(guò)程中,也可以說(shuō),session beans體現(xiàn)EJB server的Client , 它通常為Client提供服務(wù)。除了你必須用到持續(xù)不變的數(shù)據(jù)外,通常使用session beans。
二、兩種類型的Session beans
有態(tài)Session beans和無(wú)態(tài)Session beans。
有態(tài)Session beans用于單個(gè)client,用來(lái)保持這個(gè)client的狀態(tài)信息。例如,網(wǎng)上購(gòu)物中的用戶定單就是一個(gè)session beans??蛻魪奈锲妨斜碇羞x取物品到定單中。最后,客戶要通過(guò)它來(lái)計(jì)算總價(jià),付款。
無(wú)態(tài)Session beans用于多個(gè)client,它不由單個(gè)client所控制。例如:聊天室中,聊天人的列表就是一個(gè)無(wú)態(tài)Session beans,因?yàn)槊考右粋€(gè)人,該列表都會(huì)變化的。
三、生命周期
?。?)有態(tài)Session beans當(dāng)client調(diào)用Session bean 的home接口的create()事件的時(shí)候就開始存在。Container就開始建立一個(gè)新的session bean實(shí)例,并且初始化,返回信息給clinet端。在這個(gè)過(guò)程中,Container調(diào)用sessionbean接口的setSessionContext()事件和ejbCreate()事件。
當(dāng)一個(gè)Client通過(guò)遠(yuǎn)程或者HOME接口調(diào)用remove()事件時(shí),Container將調(diào)用ejbRemove()事件,以后,這個(gè)bean的生命周期就結(jié)束了。此時(shí),假如client試著再去調(diào)用beans的事件,將產(chǎn)生一個(gè)java.rmi.NoSUChObjectException異常。
(2)無(wú)態(tài)Session beans當(dāng)client調(diào)用Session bean 的home接口的create()事件的時(shí)候就開始生存。Container就開始建立一個(gè)新的session bean實(shí)例,返回信息給clinet端。在這個(gè)過(guò)程中,Container調(diào)用sessionbean接口的setSessionContext()事件和ejbCreate()事件。這個(gè)新的bean就被加到一個(gè)“池”中,供Client端用。由于不帶任何Client端特有的狀態(tài),所以這個(gè)“池”中的任何beans都可以被client端用。
當(dāng)Container從“池”中移掉一個(gè)對(duì)象的時(shí)候,將調(diào)用bean對(duì)象的ejbRemove事件。需要注重的是:調(diào)用create()和remove()事件,并不能從無(wú)態(tài)Session beans的 "池"中增加和移走無(wú)態(tài)Session beans。在整個(gè)過(guò)程中,無(wú)態(tài)Session beans的生命周期是由Container來(lái)控制的。
新聞熱點(diǎn)
疑難解答
圖片精選
網(wǎng)友關(guān)注