隨筆 - 40, 文章 - 0, 評論 - 20, 引用 - 0
          數據加載中……

          EJb 會話Bean

          在EJB容器中,SessionBean主要有兩種:無狀態(stateless)和有狀態(stateful)。
          1、無狀態EJB,類似Servlet,它只提供一個引用(Bean instance),被所有客戶端使用,不保留某個客戶的單獨信息。
          例如:在某無狀態EJB中,有一個數據成員(變量) i_count (整型,用于訪問計數,初始值為0,訪問一次累加1),它是公共的。某客戶端訪問后,值累加為1。另一個客戶端訪問時是已經變化了的值為1。

          2、有狀態EJB,類似數據庫的Connect鏈接,也類似線程守護,它提供引用池(Bean instance pool),每個客戶端會有單獨的信息。
          例如:在某有狀態EJB中,有一個數據成員(變量) i_count (整型,用于訪問計數,初始值為0,訪問一次累加1),它對每個客戶端來說是隔離的。某客戶端訪問后,值累加為1。另一個客戶端訪問時還是原來的值為0。

          這里提到的數據成員(變量) i_count ,在EJB規范中稱作:conversational state 。對它的要求也很多的,例如類型為 Serializable objects。還有,還要在ejbActivate(),ejbPassivate(),ejbRemove()等生命周期約定的方法中處理。詳見EJB規范吧。

          我的感想:在看第一遍書時,還一點感覺都沒有,根本就看不明白SessionBean中的session與Servlet容器中的session有什么區別。
          動手編程后,才感覺到EJB只是比Servlet更規范,更重量而已。真正的區別就是接口協議一個是基于HTTP,一個是基于RMI/IIOP。Servlet與無狀態的SessionBean在Session上是一樣的控制。Servlet中的Session對象與有狀態的SessionBean是一樣的控制。
          對于應用,例如有一個購物車,要記錄正在采購的物品信息,沒有EJB時,我們一般是存在Servlet容器中的session中。有了EJB,則可以存儲在有狀態的SessionBean中,并且該次有狀態的sessionBean的instance還得保存在Servlet的session中。這樣的好處是:至少可以減輕Servlet容器的負載。



          轉自:
          http://zengabo.blogchina.com/blog/527365.html

          posted on 2006-02-22 16:35 月亮 閱讀(258) 評論(0)  編輯  收藏


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 南城县| 柞水县| 新巴尔虎右旗| 江都市| 铁岭县| 佛冈县| 阿拉善盟| 镇坪县| 正镶白旗| 江都市| 福州市| 西充县| 云龙县| 弥渡县| 张掖市| 宽甸| 马公市| 且末县| 城固县| 兴仁县| 桂阳县| 三门峡市| 龙陵县| 分宜县| 出国| 麻江县| 桐柏县| 疏勒县| 凯里市| 凤冈县| 寻乌县| 鄂温| 汝州市| 紫阳县| 临安市| 宜州市| 喀什市| 郑州市| 台山市| 东兰县| 洪雅县|