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