相關(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制作購(gòu)物車
- 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):小 中 大
為什么需要持久化
客戶端訪問(wèn)了某個(gè)能開啟會(huì)話功能的資源, web服務(wù)器就會(huì)創(chuàng)建一個(gè)與該客戶端對(duì)應(yīng)的HttpSession對(duì)象,每個(gè)HttpSession對(duì)象都要站用一定的內(nèi)存空間。如果在某一時(shí)間段內(nèi)訪問(wèn)站點(diǎn)的用戶很多,web服務(wù)器內(nèi)存中就會(huì)積累大量的HttpSession對(duì)象,消耗大量的服務(wù)器內(nèi)存,即使用戶已經(jīng)離開或者關(guān)閉了瀏覽器,web服務(wù)器仍要保留與之對(duì)應(yīng)的HttpSession對(duì)象,在他們超時(shí)之前,一直占用web服務(wù)器內(nèi)存資源。
web服務(wù)器通常將那些暫時(shí)不活動(dòng)但未超時(shí)的HttpSession對(duì)象轉(zhuǎn)移到文件系統(tǒng)或數(shù)據(jù)庫(kù)中保存,服務(wù)器要使用他們時(shí)再將他們從文件系統(tǒng)或數(shù)據(jù)庫(kù)中裝載入內(nèi)存,這種技術(shù)稱為Session的持久化。
將HttpSession對(duì)象保存到文件系統(tǒng)或數(shù)據(jù)庫(kù)中,需要采用序列化的方式將HttpSession對(duì)象中的每個(gè)屬性對(duì)象保存到文件系統(tǒng)或數(shù)據(jù)庫(kù)中;將HttpSession對(duì)象從文件系統(tǒng)或數(shù)據(jù)庫(kù)中裝載如內(nèi)存時(shí),需要采用反序列化的方式,恢復(fù)HttpSession對(duì)象中的每個(gè)屬性對(duì)象。所以存儲(chǔ)在HttpSession對(duì)象中的每個(gè)屬性對(duì)象必須實(shí)現(xiàn)Serializable接口
Session的持久化的作用:
1.提高服務(wù)器內(nèi)存的利用率,保證那些暫;顒(dòng)的客戶端在會(huì)話超時(shí)之前繼續(xù)原來(lái)的會(huì)話
2.在多臺(tái)web服務(wù)器協(xié)同對(duì)外提供服務(wù)的集群系統(tǒng)中,使用Session的持久化技術(shù),某臺(tái)服務(wù)器可以將其中發(fā)生改變的Session對(duì)象復(fù)制給其他服務(wù)器。保證了在某臺(tái)服務(wù)器停止工作后可以由其他服務(wù)器來(lái)接替它與客戶端的會(huì)話
3.在一個(gè)web應(yīng)用程序重啟時(shí),服務(wù)器也會(huì)持久化該應(yīng)用程序中所有HttpSession對(duì)象,保證客戶端的會(huì)話活動(dòng)仍可以繼續(xù)。
Tomcat使用Session Manager 類來(lái)管理Session的持久化,他提供了兩個(gè)SessionManager類
org.apache.catalina.session.StandardManager
org.apache.catalina.session.PersistentManager
StandardManager是tomcat默認(rèn)使用的,在web應(yīng)用程序關(guān)閉時(shí),對(duì)內(nèi)存中的所有HttpSession對(duì)象進(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對(duì)象保存到該設(shè)備