EJB兩種會話Bean的誤解

 

    很多朋友(包括我)對兩種session bean存在誤解,認爲有狀態是實例一直存在,保存每次調用後的狀態,並對下一次調用起作用,而認爲無狀態是每次調用實例化一次,不保留用戶信息。

 

     但是,經過仔細分析並用實踐檢驗後,發現,事實恰好相反:

 

     有狀態和無狀態會話bean的本質區別是它們的生命期。首先用到的概念--用戶:session bean 的用戶實際上就是直接調用ejb的類的實例,甚至是這個實例的某個方法。同一個類的不同實例對於session bean 來說是不同的用戶。

 

    (1)有狀態會話bean :每個用戶有自己特有的一個實例,在用戶的生存期內,bean保持了用戶的信息,即“有狀態”;一旦用戶滅亡(調用結束或實例結束),bean的生命期也告結束。即每個用戶最初都會得到一個初始的bean。

 

    (2)無狀態會話bean :bean一旦實例化就被加進會話池中,各個用戶都可以共用。即使用戶已經消亡,bean 的生命期也不一定結束,它可能依然存在於會話池中,供其他用戶調用。由於沒有特定的用戶,那麼也就不能保持某一用戶的狀態,所以叫無狀態bean。但無狀態會話bean 並非沒有狀態,如果它有自己的屬性(變量),那麼這些變量就會受到所有調用它的用戶的影響,這在以後實際應用中應該值得注意。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章