Session的持久化:
Session的持久化就是将HttpSession对象从内存中转移到文件系统或数据库中,这样做的好处是:减少系统资源的占用,如果Servlet容器突然关闭或重启,或Web应用重启,这些持久化了的HttpSession对象可以再重新加载进来,对于客户端,还是使用同一个Session。
Session的持久化是由Session Manager来管理的,Tomcat提供了两个实现类:
l org.apache.catalina.session.StandarManager
l org.apache.catalina.session.PersistentManager
1、StandarManager是默认的Session Manager。它的实现机制是:当Tomcat服务器关闭或重启,或Web应用被重新加载时,会将内存中所有的HttpSession对象保存到文件系统中,默认的文件路径是:%CATALINA_HOME%\work\Catalina\<applicaton-name>\SESSIONS.ser
重启Tomcat后,Tomcat服务器把SESSIONS.ser中的持久化HttpSession对象加载到内存中。
2、PersistentManager能够把HttpSession对象保存到Session Store中,它提供了比较StandarManager更灵活的管理功能,具有容错能力,控制内存中HttpSession对象的数目等。
Tomcat实现Session Store的接口为org.apache.catalina.session.Store,目前提供了两个实现这一接口的类:org.apache.catalina.session.FileStore和org.apache.catalina.session.JDBCStore。FileStore会将HttpSession对象保存到文件系统中;而JDBCStore则将HttpSession对象保存到数据库表中。
下面给出这两个类的配置:
配置FileStore:
在server.xml中,在Web应用的<Context>元素加入<Manager>元素,例如:
<Context path=”/helloapp” docBase=”helloapp” debug=”0” reloadable=”true”>
<Manager className=”org.apache.catalina.session.PersistentManager”>
debug=0;
saveOnRestart=”true”
maxActiveSessions=”-1”
minIdleSwap=”-1”
maxIdleSwap=”-1”
maxIdleBackup=”-1”
<Store className=”org.apache.catalina.session.FileStore” directory=”mydir”/>
</Manager>
</Context>
属性
作用
className
指定Session Manager的实现类名,或Session Store的实现类名
debug
设定Session Manager采用的跟踪级别,取值0到99,越小越跟踪信息越少,发布产品时,应该设置为0,以提高性能。
saveOnRestart
如果为true,则当Tomcat关闭时,所有的有效HttpSession对象都保存到Session Store中;当Tomcat重启时,加载这些HttpSession对象。
maxActiveSessions
设置处于活动状态的Session的最大数目,如果超过这一数目,Tomcat把一些超过的Sessin对象保存到Session Store中。-1表示不限制。
minIdleSwap
Session处于不活动状态的最小时间,单位为秒,超过这一时间,Tomcat有可能把这个Session对象移到Session Store中。
maxIdleSwap
Session处于不活动状态的最大时间,超过这一时间,Tomcat就一定会将这个Session对象移到Session Store中。
maxIdleBackup
Session处于不活动状态的最大时间,超过这一时间,Tomcat就就会将这个Session对象拷贝到Session Store中进行备份。
directory
指定Session Store在哪个文件系统目录下存放持久化的Session对象的信息,文件名是Session ID.session。
配置JDBCStore:
在server.xml中,在Web应用的<Context>元素加入<Manager>元素,例如:
<Context path=”/helloapp” docBase=”helloapp” debug=”0” reloadable=”true”>
<Manager className=”org.apache.catalina.session.PersistentManager”>
debug=0;
saveOnRestart=”true”
maxActiveSessions=”-1”
minIdleSwap=”-1”
maxIdleSwap=”-1”
maxIdleBackup=”-1”
<Store className=”org.apache.catalina.session.JDBCStore”
driverName=”com.mysql.jdbc.Driver”
connectionURL=”jdbc:mysql://localhost:3306/demo?user=root password=1234”
sessionTable=”tomcat_sessions”
sessionIdCol=”session_id”
sessionDataCol=”session_data”
sessionValidCol=”session_valid”
sessionMaxInactiveCol=”max_inactive”
sessionLastAccessedCol=”last_access”
sessionAppCol=”app_name”
checkInterval=”60”
debug=”0”
/>
</Manager>
</Context>
说明:上面的元素属性的含义与FileStore的相同,上面的配置假设在MySQL服务器上的demo数据库的tomcat_sessions表中存放持久化Session对象的信息,这个表的结构如下:
CREATE TABLE tomcat_sessions(
session_id VARCHAR(10) NOT NULL PRIMARY KEY,
session_data MEDIUMBLOB,
session_valid CHAR(1) NOT NULL,
max_inactive INT NOT NULL,
last_access BIGINT NOT NULL,
app_name VARCHR(255),
KEY kapp_name(app_name)
);
分享到:
相关推荐
这篇名为"javaee-Session持久化小结"的文章可能涵盖了如何在JavaEE应用中实现Session的创建、管理和持久化。 首先,Session的创建通常是通过HttpSession接口的`getSession()`方法完成的。当用户首次访问服务器时,...
Weblogic 10.3 集群配置与Session持久化是企业级应用部署的关键环节,它涉及到多个方面的知识,包括Weblogic的基础概念、集群架构、安装配置以及Session的管理和持久化。 1. **Weblogic集群名词解释** - **Domain*...
根据给定文件的信息,本文将围绕“Session 用户交互间隔与 Session 持久化”这一主题进行深入探讨,包括 Session 的基本概念、Tomcat 中 Session 的管理方式、Session 的持久化机制以及用户交互间隔等内容。...
Tomcat_Session 的持久化 在 Web 应用程序中,Session 是一种用来跟踪用户状态的机制。Tomcat_Session 的持久化是指将 HttpSession 对象保存到文件系统或数据库中,以便在服务器关闭或重启时可以恢复 Session 数据...
博文链接:https://wangxuliangboy.iteye.com/blog/237534
在这个过程中,`SessionListener`、持久化`Session`和`Springmvc拦截器`是关键组件,让我们逐一深入探讨。 ### SessionListener `SessionListener`是Java Servlet API中的一个接口,用于监听`HttpSession`事件。...
下面我们将深入探讨如何实现这一过程,以及何时需要使用Session持久化。 ### 使用SQL Server数据库保存Session ASP.NET提供了一种方法,即通过配置IIS(Internet Information Services)和使用SQL Server存储...
【Session详解及注意事项】 Session是Web开发中一种用于在客户端和服务器之间保持状态的重要机制。在HTTP协议中,由于其无状态性,无法在多个请求之间保持数据,因此需要使用Cookie或Session来实现状态管理。本文...
数据持久化是通过Hibernate的核心接口Session来实现的。Session提供了对数据库的 CRUD(创建、读取、更新、删除)操作,它是连接应用程序和数据库的桥梁。在Hibernate中,对象的状态有三种:瞬时态、持久态和脱管态...
web项目开发过程中经常遇到用户登陆,退出的问题,根据登陆和退出来操作session的存值和销毁....但往往很多用户不去点击"退出",而是关闭FF的tab或浏览器(多种浏览器),这就给session的销毁带来了困难.
重写session机制,默认session是以临时文件形式存储在服务器,将session写入数据库,建表和注释写的都很清晰,已测试
例如,WebLogic Server支持多种Session持久化方式,包括文件、数据库、客户端Cookie保存和复制。 #### 三、Session在Java中的实现 在Java Web开发中,Session的实现主要通过`javax.servlet.http.HttpSession`接口...
Session 持久化到数据库是指将 Session 信息存储到数据库中,以保证 Session 的持久化。 优点:服务器出现问题,Session 不会丢失。 缺点:如果网站的访问量很大,把 Session 存储到数据库中,会对数据库造成很大...
Session数据存储在服务器的内存中,如果服务器配置了Session持久化,那么数据也会被保存到硬盘或者数据库中,以防服务器重启或内存不足时丢失数据。但需要注意的是,大量用户会导致服务器内存压力增大,因此合理...
Tomcat-Redis-Session-Manager是基于Apache Tomcat的Session管理器,通过集成Redis作为Session持久化存储,实现了跨服务器的Session共享。它将Tomcat中的Session数据序列化后存储到Redis中,当需要时再从Redis中读取...
标题"tomcat session存到mencache"指的是将Tomcat的session持久化存储到Memcache中,以提高性能和可扩展性。 Memcache可以在多台服务器之间共享session数据,从而支持负载均衡和高可用性。对于描述中提到的“版本为...
3. **Session持久化**:将Session数据保存在数据库或文件系统中,即使服务器重启,也可以恢复Session。但这会增加服务器的I/O负担和复杂性。 4. **Session复制或共享**:在集群环境中,可以使用Session复制或共享...
其版本"redis-session-manager-2.0.6.zip"是适用于Windows操作系统的版本,提供了方便的session持久化和高可用性解决方案。 1. Redis介绍: Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息...
2. **查询执行前**:当调用`Session.find()`或`Session.iterate()`方法时,如果缓存中存在对应的持久化对象,Session会首先尝试从缓存中获取,而不是直接访问数据库。若缓存中无数据,才会发起数据库查询。 #### 四...