session為什麼需要持久化

2022-05-08 08:33:09 字數 1216 閱讀 7297

為什麼需要持久化:

客戶端訪問了某個能開啟會話功能的資源, web伺服器就會建立乙個與該客戶端對應的httpsession物件,每個httpsession物件都要站用一定的記憶體空間。如果在某一時間段內訪問站點的使用者很多,web伺服器記憶體中就會積累大量的httpsession物件,消耗大量的伺服器記憶體,即使使用者已經離開或者關閉了瀏覽器,web伺服器仍要保留與之對應的httpsession物件,在他們超時之前,一直占用web伺服器記憶體資源。

web伺服器通常將那些暫時不活動但未超時的httpsession物件轉移到檔案系統或資料庫中儲存,伺服器要使用他們時再將他們從檔案系統或資料庫中裝載入記憶體,這種技術稱為session的持久化。

將httpsession物件儲存到檔案系統或資料庫中,需要採用序列化的方式將httpsession物件中的每個屬性物件儲存到檔案系統或資料庫中;將httpsession物件從檔案系統或資料庫中裝載如記憶體時,需要採用反序列化的方式,恢復httpsession物件中的每個屬性物件。所以儲存在httpsession物件中的每個屬性物件必須實現serializable介面

session的持久化的作用:

1.提高伺服器記憶體的利用率,保證那些暫停活動的客戶端在會話超時之前繼續原來的會話

2,在多台web伺服器協同對外提供服務的集群系統中,使用session的持久化技術,某台伺服器可以將其中發生改變的session物件複製給其他伺服器。保證了在某台伺服器停止工作後可以由其他伺服器來接替它與客戶端的會話

3,在乙個web應用程式重啟時,伺服器也會持久化該應用程式中所有httpsession物件,保證客戶端的會話活動仍可以繼續。

tomcat使用session manager 類來管理session的持久化,他提供了兩個sessionmanager類

org.apache.catalina.session.standardmanager

org.apache.catalina.session.persistentmanager

standardmanager是tomcat預設使用的,在web應用程式關閉時,對記憶體中的所有httpsession物件進行持久化,把他們儲存到檔案系統中。預設的儲存檔案為

persistentmanager比standardmanager更為靈活,只要某個裝置提供了實現org.apache.catalina.store介面的驅動類,persistentmanager就可以將httpsession物件儲存到該裝置

為什麼要session 持久化?

為什麼需要持久化 客戶端訪問了某個能開啟會話功能的資源,web伺服器就會建立乙個與該客戶端對應的httpsession物件,每個httpsession物件都要站用一定的記憶體空間。如果在某一時間段內訪問站點的使用者很多,web伺服器記憶體中就會積累大量的httpsession物件,消耗大量的伺服器記...

為什麼需要 cookie 和 session

在web發展史中,我們知道瀏覽器與伺服器間採用的是 http 協議,而這種協議是無狀態的 我們在開啟乙個網頁 a 後,再開啟乙個網頁 b 這個時候網頁 b 知不知道我們是開啟網頁 a 的人呢?答案是不知道,這就是無狀態。據說這麼設計是為了保證伺服器不會因為儲存當前的傳輸資訊而 畢竟當時電腦的效能很低...

什麼是持久層 為什麼要持久化

1.什麼是持久層?quote 狹義的理解 持久化 僅僅指把域物件永久儲存到資料庫中 廣義的理解,持久化 包括和資料庫相關的各種操作 持久化就是將有用的資料以某種技術儲存起來,將來可以再次取出來應用,資料庫技術,將記憶體資料一檔案的形式儲存在永久介質中 磁碟等 都是持久化的例子.儲存 把域物件永久儲存...