tomcat 學習筆記之 Session管理

一、Catalina 經過一個 Session 管理器的組件來管理創建的Session 對象java

  • 該組件由 org.apache.catalina.Manager 接口表示
  • Session 管理器必須與一個 Context 關聯
  • Session 管理器負責,建立、更新、銷燬 Session 對象
  • 當有請求到來時,會返回一個有效的Session 對象

默認狀況下,Session 管理器會將Session 對象放入內存中數據庫

  • 也能夠持久化,存入數據庫中或文件存儲器中

二、Session 對象apache

  • 在Servlet 編程中,Session 由 javax.servlet.http.HttpSession 接口表示
  • tomcat 中,由 org.apache.catalina.session 包下的StandardSession 類
  • 實際使用中,StandardSessionFacade 外觀類

  • Session接口是作外 Catalina 內部的外觀類使用的

StandardSession 類編程

  • 實現了 javax.servlet.http.HttpSession 接口
  • 實現了 org.apache.catalina.Session 接口
  • 實現了 Serializable 接口
  • 以下是比較重要的私有化變量

StandardSessionFacade 類tomcat

  • 爲了傳遞Session 對象給serlvet 實例,其實傳遞的是外觀類
  • 僅僅實現了 HttpSession 接口
  • 對方問作了限制

三、Managersession

  • Session 管理器是Manager 接口的實例
  • org.apache.catalina.session.ManagerBase 工具類
  • 該類提供了常見功能的實現
  • ManagerBase 有倆直接子類:StandardManager 和 PersistentManagerBase

StandardManager工具

  • Catalina 運行時,StandardManager 將Session 對象存入內存
  • Catalina 關閉時,全部session 存入到一個文件

PersistentManagerBase對象

  • 有一類session管理器會將session 對象存儲到輔助存儲器
  • PersistentManagerBase 是這種管理器的基類

Manager 接口blog

ManagerBase 類繼承

  • Context 容器的全部Session 活動對象,存入map中

StandardManager 類

  • 是Manager 接口的標準實現
  • 該類實現了 LifeCycle 接口,這樣就能夠由與其相關的 Context 容器啓動和關閉
  • Session 還要銷燬那些已經失效的Session對象

PersistentManagerBase 類

  • 全部持久化Session 管理器的父類
  • 具備備份和換出Session 對象的任務

換出:

  • 當Session 對象數量超出 maxActeSessions 所指的上限時
  • 或者閒置了過長時間時
  • 既然Session 對象能夠被換出,因此查找時內存中找不到,就會去存儲器查找

 備份:

  • 僅僅會備份那些空閒時間超過 maxIdleBackUp 指定的值得session 對象

PersistentManager 類 

  • 繼承自PersistentManagerBase 類
  • 並沒多添加其餘方法,只是多了兩個屬性

DistributedManager 類

  • 繼承自PersistentManagerBase 類
  • 用於兩個或多個節點集羣環境
  • 集羣環境中,必須使用DistributedManager 做爲session管理器,支持複製session對象(該類主要功能)
  • 爲了實現複製session對象的目的,建立和銷燬Session對象時,DistributedManager會向其餘節點發送消息

爲了與集羣中其餘節點 發送接收消息

  • org.apache.catalina.clust 包中提供了一些可供使用的工具類
  • ClusterSender 向其餘節點發送消息
  • ClusterReceiver 接收其餘節點發送的信息

三、存儲器

  • 存儲器是實現了 org.apache.catalina.Store 接口的實例
  • 是爲Session 管理器的Session 對象提供持久化存儲器的一個組件

  • Store 接口類結構圖

StoreBase 類

  • 一個抽象類,提供基本功能
  • 兩個直接子類,FileStore 類和 JDBCStore 類
相關文章
相關標籤/搜索