【Java.Web】Session —— Session的持久化(容器实现此功能)

http://blog.csdn.net/robinjwong/article/details/39847603



Session的持久化

当一个Session开始时,Servlet容器会为Session创建一个HttpSession对象。Servlet容器会在某些情况下,把这些HttpSession对象从内存中转移到永久性存储设备中(如文件系统 或 数据库)中,在需要访问HttpSession信息时在把它们加载到内存中。



把内存中的HttpSession对象保存到文件系统或者数据库中,这一过程成为会话的持久化(使用Java对象序列化/反序列化技术)。

在持久化Session时,Servlet容器不仅会持久化HttpSession对象,还会对它的所有可以序列化的属性进行持久化,从而确保存放在Session范围内的共享数据不会丢失。


持久化的优点:

  • 节约内存空间;
  • 确保在服务器重启或单个Web应用重启后,能回复重启前的会话;


状态的转化

Session在其生命周期中,可能会在运行时状态和持久化状态之间转换。


  • 会话从运行时状态变为持久化状态的过程称为 —— 搁置;在以下情况下,Session会被搁置:
    • 当服务器总之或单个Web应用终止时,Web应用中的Session会被搁置;
    • 会话处于不活动状态的时间太长,达到了特定的限定值;
    • Web应用中处于运行状态的会话数目太多,达到了特定的限制值,部分Session被搁置


  • 会话从持久化状态变为运行时状态的过程称为 —— 激活;在以下情况下,Session会被激活:
    • 当服务器重启或单个Web应用重启时,Web应用中的Session会被激活
    • 处于Session中的客户端想Web应用发出HTTP请求,相应的Session会被激活


Session的搁置和激活对客户端来说是透明的。


Session持久化的实现(容器实现)

Java Servlet API并没有为Session的持久化提供标准的接口,Session的持久化完全依赖于Servlet容器的具体实现


Tomcat Session持久化的管理

tomcat采用会话管理器来管理Session:

  • org.apache.catalina.session.StandardManager类 —— 标准会话管理器
  • org.apache.catalina.session.PersistentManager类 —— 提供更多的管理功能

标准Session管理器 StandardManger


持久化Session管理器PersistentManger


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值