相關(guān)資訊
- PHP Session優(yōu)化源碼
- Session 的幾種存儲(chǔ)方式及優(yōu)缺點(diǎn)
- cookie機(jī)制和session機(jī)制的區(qū)別
- WindowsServer2008單賬戶創(chuàng)建多Ses
- php中session丟失原因可能是服務(wù)器
- PHP session回收機(jī)制
- 關(guān)于Session與HashTable制作購物車
- Asp遍歷Request,Session和Applicat
- cookie機(jī)制和session機(jī)制兩者之間的
- WCF學(xué)習(xí):Instance context model(
本類常用軟件
-
福建農(nóng)村信用社手機(jī)銀行客戶端下載下載量:584204
-
Windows優(yōu)化大師下載量:416912
-
90美女秀(視頻聊天軟件)下載量:366961
-
廣西農(nóng)村信用社手機(jī)銀行客戶端下載下載量:365699
-
快播手機(jī)版下載量:325855
淺述Session的持久化的作用與原理
2013/1/28 21:49:04 出處:本站原創(chuàng) 人氣:942次 字號(hào):小 中 大
為什么需要持久化
客戶端訪問了某個(gè)能開啟會(huì)話功能的資源, web服務(wù)器就會(huì)創(chuàng)建一個(gè)與該客戶端對應(yīng)的HttpSession對象,每個(gè)HttpSession對象都要站用一定的內(nèi)存空間。如果在某一時(shí)間段內(nèi)訪問站點(diǎn)的用戶很多,web服務(wù)器內(nèi)存中就會(huì)積累大量的HttpSession對象,消耗大量的服務(wù)器內(nèi)存,即使用戶已經(jīng)離開或者關(guān)閉了瀏覽器,web服務(wù)器仍要保留與之對應(yīng)的HttpSession對象,在他們超時(shí)之前,一直占用web服務(wù)器內(nèi)存資源。
web服務(wù)器通常將那些暫時(shí)不活動(dòng)但未超時(shí)的HttpSession對象轉(zhuǎn)移到文件系統(tǒng)或數(shù)據(jù)庫中保存,服務(wù)器要使用他們時(shí)再將他們從文件系統(tǒng)或數(shù)據(jù)庫中裝載入內(nèi)存,這種技術(shù)稱為Session的持久化。
將HttpSession對象保存到文件系統(tǒng)或數(shù)據(jù)庫中,需要采用序列化的方式將HttpSession對象中的每個(gè)屬性對象保存到文件系統(tǒng)或數(shù)據(jù)庫中;將HttpSession對象從文件系統(tǒng)或數(shù)據(jù)庫中裝載如內(nèi)存時(shí),需要采用反序列化的方式,恢復(fù)HttpSession對象中的每個(gè)屬性對象。所以存儲(chǔ)在HttpSession對象中的每個(gè)屬性對象必須實(shí)現(xiàn)Serializable接口
Session的持久化的作用:
1.提高服務(wù)器內(nèi)存的利用率,保證那些暫停活動(dòng)的客戶端在會(huì)話超時(shí)之前繼續(xù)原來的會(huì)話
2.在多臺(tái)web服務(wù)器協(xié)同對外提供服務(wù)的集群系統(tǒng)中,使用Session的持久化技術(shù),某臺(tái)服務(wù)器可以將其中發(fā)生改變的Session對象復(fù)制給其他服務(wù)器。保證了在某臺(tái)服務(wù)器停止工作后可以由其他服務(wù)器來接替它與客戶端的會(huì)話
3.在一個(gè)web應(yīng)用程序重啟時(shí),服務(wù)器也會(huì)持久化該應(yīng)用程序中所有HttpSession對象,保證客戶端的會(huì)話活動(dòng)仍可以繼續(xù)。
Tomcat使用Session Manager 類來管理Session的持久化,他提供了兩個(gè)SessionManager類
org.apache.catalina.session.StandardManager
org.apache.catalina.session.PersistentManager
StandardManager是tomcat默認(rèn)使用的,在web應(yīng)用程序關(guān)閉時(shí),對內(nèi)存中的所有HttpSession對象進(jìn)行持久化,把他們保存到文件系統(tǒng)中。默認(rèn)的存儲(chǔ)文件為:
/work/Catalina/<主機(jī)名>/<應(yīng)用程序名>/sessions.ser
PersistentManager比StandardManager更為靈活,只要某個(gè)設(shè)備提供了實(shí)現(xiàn)org.apache.catalina.Store接口的驅(qū)動(dòng)類,PersistentManager就可以將HttpSession對象保存到該設(shè)備