Tomcat的會話管理

Tomcat 的會話管理(Session Manger)

Manager
Manger對象用於實現HTTP會話管理的功能,Tomcat6中有5種Manger的實現:
       
1. StandardManager(標準會話管理器)
      Tomcat的默認會話管理器,用於非集羣環境中對單個處於運行狀態的Tomcat實例會話進行管理。當Tomcat關閉時,這些會話相關的數據會被寫入磁盤上的一個名叫SESSION.ser的文件,並在Tomcat下次啓動時讀取此文件。
       默認只有在Tomcat正常關閉時纔會保存完整的用戶會話信息
       默認保存於$CATALINA_HOME/work/Catalina/<hostname>/<webapp-name>/下的SESSIONS.ser文件中
       若是自定義的虛擬主機則保存在 $CATALINA_HOME/work/Catalina/<hostname>/_/ 下的 SESSIONS.ser 文件中
                   

  1. <Manager className="org.apache.catalina.session.StandardManager" 
  2.            maxInactiveInterval="7200"/> 

     maxActiveSessions:最多允許的活動會話數量,默認爲-1,表示不限制;
     maxInactiveInterval:非活動的會話超時時長,默認爲60s;
     pathname:會話文件的保存目錄;
               
       
2. PersistentManager(持久會話管理器)
      將會話數據保存至持久存儲中,並且能在服務器意外中止後重新啓動時重新加載這些會話信息。持久會話管理器支持將會話保存至文件存儲(FileStore)或JDBC存儲(JDBCStore)中。
      當一個會話長時間處於空閒狀態時會被寫入到swap會話對象,這對於內存資源比較吃緊的應用環境來說比較有用。
      可以將每一個用戶的會話(每一個請求)都會保存在一個單獨的文件中 <session id>.session
               
          FileStore                            基於文件存儲
          JDBCStore(java數據庫系統互聯)        --> 保存在RDBMS中

3. DeltaManager
      用於Tomcat集羣的會話管理器,它通過將改變了會話數據同步給集羣中的其它節點實現會話複製。這種實現會將所有會話的改變同步給集羣中的每一個節點,也是在集羣環境中用得最多的一種實現方式。

4. BackupManager
      用於Tomcat集羣的會話管理器,與DeltaManager不同的是,某節點會話的改變只會同步給集羣中的另一個而非所有節點。
       
5. SimpleTcpReplicationManager
       Tomcat4時用到的版本



持久會話管理器(PersistentManager)    保存至文件中的示例:

  1. <Manager className="org.apache.catalina.session.PersistentManager" 
  2.     saveOnRestart="true"
  3.     <Store className="org.apache.catalina.session.FileStore" 
  4.         directory="/data/tomcat-sessions"/> 
  5. </Manager> 


每個用戶的會話會被保存至directory指定的目錄中的文件中,文件名爲<session id>.session,並通過後臺線程每隔一段時間(checkInterval參數定義,默認爲60秒)檢查一次超時會話。
 

(如有錯誤或不足之處還請多多指教)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章