Session持久化

1.客户端访问Web服务器资源,服务器就会创建一个对该客户相对应的HttpSession对象。即使客户已经离开了浏览器,服务器仍要保留与之对应的HttpSession对象,直至超时。

2.服务器通常把那些暂时不活动但未超时的HttpSession对象转移到文件或数据库中,要使用它们的时候在从中取出装入内存。 这种技术叫做Session持久化

3.持久化的作用:

  • 提高服务器内存的利用率,保证那些暂停活动的客户端在会话超时之前继续原来的会话
  • 在多台web服务器协同对外提供服务的集群系统中,使用Session的持久化技术,某台服务器可以将其中发生改变的Session对象复制给其他服务器。保证了在某台服务器停止工作后可以由其他服务器来接替它与客户端的会话
  • 在一个web应用程序重启时,服务器也会持久化该应用程序中所有HttpSession对象,保证客户端的会话活动仍可以继续。

Tomcat使用Session Manager 类来管理Session的持久化,他提供了两个SessionManager类

org.apache.catalina.session.StandardManager

org.apache.catalina.session.PersistentManager

StandardManager是tomcat默认使用的,在web应用程序关闭时,对内存中的所有HttpSession对象进行持久化,把他们保存到文件系统中。

默认的存储文件为<tomcat 安装目录>/work/Catalina/<主机名>/<应用程序名>/sessions.serPersistentManager比StandardManager更为灵活,

只要某个设备提供了实现org.apache.catalina.Store接口的驱动类,PersistentManager就可以将HttpSession对象保存到该设备

4.保存信息: Session cookie  数据库

时间: 2024-11-08 21:50:02

Session持久化的相关文章

[转]session 持久化问题(重启服务器session 仍然存在)

转:http://xiaolongfeixiang.iteye.com/blog/560800 关于在线人数统计,大都使用SessionListener监听器实现. SessionListener 触发源:  1.Session Create 时 2.Session timeout 时 3.显式调用session的invalidate方法 时 4.在Tomcat设置Session持久化为FALSE的情况下,Tomcat关闭时,触发Session destroy事件 5.在Tomcat设置Sess

Tomcat Session 持久化

Session的主要数据被存储在服务器内存中,而服务器会为每个在线用户创建一个Session对象,当在线用户很多时,例如同时有几万或是几十万在线的情况下,Session内存的开销将会十分巨大,会影响Web服务器性能.而Session的钝化机制刚好可解决此问题.Session钝化机制的本质就在于把服务器中不经常使用的Session对象暂时序列化到系统文件系统或是数据库系统中,当被使用时反序列化到内存中,整个过程由服务器自动完成. 实现: 要完成session持久化,存放在session里的对象必须

细说Tomcat之session持久化探秘

业务场景:通常,我们会在会话级别存放一些参数,期望在session生命周期内,可以一直取得保存在session中的指定数据:而只要session过期或者失效,则需要执行重新登录等操作.但是!我们对于这样的场景会感到很疑惑:在session中保存对象值,正常重启Tomcat,再次访问应用,居然还可以继续从session中取得之前保存的数据?理论上,Tomcat容器重启之后再次访问应用应该会创建一个新的session对象,不应该还能从之前的session中取得数据.这似乎是一种错觉!!! 原因:默认

tomcat配置session持久化

Session的管理,tomcat两个实现类:org.apache.catalina.session.StandardManager和org.apache.catalina.session.PersistentManager StandardManager 默认的方法 可以配置的地方比较少 PersistentManager 提供了很灵活的管理方式 配置性强 形式一:存储在本地文件中:配置conf目录里的context.xml文件 1.修改的文件: $Tomcat_HOME/conf/conte

配置Tomcat将Session持久化到MySQL

首先,在conf/context.xml中文件中,将以下的配置加入到根结点下: <Manager className="org.apache.catalina.session.PersistentManager"       maxActiveSessions="-1"       minIdleSwap="-1"       maxIdleSwap="-1"       maxIdleBackup="-1&q

Tomcat生成的session持久化到MySQL

Telling Tomcat to save session records in MySQL 此部分内容摘自 MySQL cookbook 3th.具体内容不做翻译,哈哈,懒 The default Tomcat default session storage mechanism uses temporary files. To save sessions using JDBC with MySQL instead, follow this procedure: Create a table

(apache+tomcat集群+memcached番外篇)单台tomcat的session信息的2种持久化方式

为什么要实现搭建tomcat集群环境呢?主要因为单个tomcat无论从吞吐量和并发数上,会达到一定的极限.如果访问量超过单个tomcat的承受能力的话,tomcat一般要么拒绝提供服务,要么直接宕掉.所以,必须要依靠tomcat集群技术.举个最简单的例子,拿"送快件"比喻,如果一个人,5分钟送一件,一小时之内,送10个,一个人完全能胜任这项工作.假设现在到了双十一,要求1小时,送100个, 那怎么办?只能安排更多的人加入"送快件"这项工作中来.这其实和集群一个道理.

Tomcat - 持久化 Session

Session 是保存在内存中的,如果服务器重启.宕机的话,Session 就会丢失.有时候,我们需要对 Session 持久化以应对意外的情况发生.例如,客户端与服务器在交互过程中,可能因为 Session 的丢失而造成数据的丢失.还有一种情况,我们需要持久化 Session.如果当前用户的访问量巨大,大量的 Session 便会占用服务器大量的内存,从而使服务器的性能受到影响.如果能将一些闲置时间较长的 Session 换出,存储至磁盘,便可以起到节省内存空间的作用. 需要注意的一点是,要持

Tomcat集群环境下session共享方案梳理(1)-通过memcached(MSM)方法实现

对于web应用集群的技术实现而言,最大的难点就是:如何能在集群中的多个节点之间保持数据的一致性,会话(Session)信息是这些数据中最重要的一块.要实现这一点, 大体上有两种方式: 一种是把所有Session数据放到一台服务器上或者数据库中,集群中的所有节点通过访问这台Session服务器来获取数据: 另一种就是在集群中的所有节点间进行Session数据的同步拷贝,任何一个节点均保存了所有的Session数据. Tomcat集群session同步方案有以下几种方式: 1)使用tomcat自带的