`
liaohexiang
  • 浏览: 31319 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Session的持久化

    博客分类:
  • JAVA
阅读更多
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持久化小结"的文章可能涵盖了如何在JavaEE应用中实现Session的创建、管理和持久化。 首先,Session的创建通常是通过HttpSession接口的`getSession()`方法完成的。当用户首次访问服务器时,...

    Weblogic 10.3集群配置指南与Session持久化

    Weblogic 10.3 集群配置与Session持久化是企业级应用部署的关键环节,它涉及到多个方面的知识,包括Weblogic的基础概念、集群架构、安装配置以及Session的管理和持久化。 1. **Weblogic集群名词解释** - **Domain*...

    session之用户交互间隔&&session持久化

    根据给定文件的信息,本文将围绕“Session 用户交互间隔与 Session 持久化”这一主题进行深入探讨,包括 Session 的基本概念、Tomcat 中 Session 的管理方式、Session 的持久化机制以及用户交互间隔等内容。...

    Tomcat_Session的持久化

    Tomcat_Session 的持久化 在 Web 应用程序中,Session 是一种用来跟踪用户状态的机制。Tomcat_Session 的持久化是指将 HttpSession 对象保存到文件系统或数据库中,以便在服务器关闭或重启时可以恢复 Session 数据...

    TOMCAT SESSION的持久化方法

    博文链接:https://wangxuliangboy.iteye.com/blog/237534

    使用SessionListener+持久化Session+Springmvc拦截器实现单点登录

    在这个过程中,`SessionListener`、持久化`Session`和`Springmvc拦截器`是关键组件,让我们逐一深入探讨。 ### SessionListener `SessionListener`是Java Servlet API中的一个接口,用于监听`HttpSession`事件。...

    asp.net session对象的持久化

    下面我们将深入探讨如何实现这一过程,以及何时需要使用Session持久化。 ### 使用SQL Server数据库保存Session ASP.NET提供了一种方法,即通过配置IIS(Internet Information Services)和使用SQL Server存储...

    seesion注意问题

    【Session详解及注意事项】 Session是Web开发中一种用于在客户端和服务器之间保持状态的重要机制。在HTTP协议中,由于其无状态性,无法在多个请求之间保持数据,因此需要使用Cookie或Session来实现状态管理。本文...

    hibernate5--2.数据持久化及事务

    数据持久化是通过Hibernate的核心接口Session来实现的。Session提供了对数据库的 CRUD(创建、读取、更新、删除)操作,它是连接应用程序和数据库的桥梁。在Hibernate中,对象的状态有三种:瞬时态、持久态和脱管态...

    缓存文件Session信息保存在数据库中

    web项目开发过程中经常遇到用户登陆,退出的问题,根据登陆和退出来操作session的存值和销毁....但往往很多用户不去点击"退出",而是关闭FF的tab或浏览器(多种浏览器),这就给session的销毁带来了困难.

    重写session机制,将session写入数据库,建表和注释写的都很清晰,已测试

    重写session机制,默认session是以临时文件形式存储在服务器,将session写入数据库,建表和注释写的都很清晰,已测试

    Session的工作原理与概念详解

    例如,WebLogic Server支持多种Session持久化方式,包括文件、数据库、客户端Cookie保存和复制。 #### 三、Session在Java中的实现 在Java Web开发中,Session的实现主要通过`javax.servlet.http.HttpSession`接口...

    分布式session方案

    Session 持久化到数据库是指将 Session 信息存储到数据库中,以保证 Session 的持久化。 优点:服务器出现问题,Session 不会丢失。 缺点:如果网站的访问量很大,把 Session 存储到数据库中,会对数据库造成很大...

    sessionsession

    Session数据存储在服务器的内存中,如果服务器配置了Session持久化,那么数据也会被保存到硬盘或者数据库中,以防服务器重启或内存不足时丢失数据。但需要注意的是,大量用户会导致服务器内存压力增大,因此合理...

    tomcat-redis-session-manager实现session共享 配置文件

    Tomcat-Redis-Session-Manager是基于Apache Tomcat的Session管理器,通过集成Redis作为Session持久化存储,实现了跨服务器的Session共享。它将Tomcat中的Session数据序列化后存储到Redis中,当需要时再从Redis中读取...

    tomcat session存到mencache

    标题"tomcat session存到mencache"指的是将Tomcat的session持久化存储到Memcache中,以提高性能和可扩展性。 Memcache可以在多台服务器之间共享session数据,从而支持负载均衡和高可用性。对于描述中提到的“版本为...

    关于session丢失问题

    3. **Session持久化**:将Session数据保存在数据库或文件系统中,即使服务器重启,也可以恢复Session。但这会增加服务器的I/O负担和复杂性。 4. **Session复制或共享**:在集群环境中,可以使用Session复制或共享...

    redis-session-manager-redis-session-manager-2.0.6.zip

    其版本"redis-session-manager-2.0.6.zip"是适用于Windows操作系统的版本,提供了方便的session持久化和高可用性解决方案。 1. Redis介绍: Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和消息...

    域对象在持久化层的状态

    2. **查询执行前**:当调用`Session.find()`或`Session.iterate()`方法时,如果缓存中存在对应的持久化对象,Session会首先尝试从缓存中获取,而不是直接访问数据库。若缓存中无数据,才会发起数据库查询。 #### 四...

Global site tag (gtag.js) - Google Analytics