Posted on 2009-06-03 23:47
Gavin.lee 閱讀(240)
評(píng)論(0) 編輯 收藏 所屬分類:
web 積累(前端 + 后臺(tái))
現(xiàn)實(shí)中,很多朋友對(duì)兩種session bean存在誤解,認(rèn)為有狀態(tài)是實(shí)例一直存在,保存每次調(diào)用后的狀態(tài),并對(duì)下一次調(diào)用起作用,而認(rèn)為無狀態(tài)是每次調(diào)用實(shí)例化一次,不保留用戶信息。仔細(xì)分析并用實(shí)踐檢驗(yàn)后,你會(huì)發(fā)現(xiàn),事實(shí)恰好相反:
有狀態(tài)和無狀態(tài)會(huì)話bean的本質(zhì)區(qū)別是它們的生命期。
首先解釋一個(gè)下面要用到的概念--用戶:session bean 的用戶實(shí)際上就是直接調(diào)用ejb的類的實(shí)例,甚至是這個(gè)實(shí)例的某個(gè)方法。同一個(gè)類的不同實(shí)例對(duì)于session bean 來說是不同的用戶。
有狀態(tài)會(huì)話bean :每個(gè)用戶有自己特有的一個(gè)實(shí)例,在用戶的生存期內(nèi),bean保持了用戶的信息,即“有狀態(tài)”;一旦用戶滅亡(調(diào)用結(jié)束或?qū)嵗Y(jié)束),bean的生命期也告結(jié)束。即每個(gè)用戶最初都會(huì)得到一個(gè)初始的bean。
無狀態(tài)會(huì)話bean :bean一旦實(shí)例化就被加進(jìn)會(huì)話池中,各個(gè)用戶都可以共用。即使用戶已經(jīng)消亡,bean 的生命期也不一定結(jié)束,它可能依然存在于會(huì)話池中,供其他用戶調(diào)用。由于沒有特定的用戶,那么也就不能保持某一用戶的狀態(tài),所以叫無狀態(tài)bean。但無狀態(tài)會(huì)話bean 并非沒有狀態(tài),如果它有自己的屬性(變量),那么這些變量就會(huì)受到所有調(diào)用它的用戶的影響,這是在實(shí)際應(yīng)用中必須注意的。