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 类
相关文章
相关标签/搜索