`

TOMCAT SESSION的持久化方法

阅读更多

Tomcat5.5.12 实现Session持久化的配置:

为什么要持久化SESSION:
 在客户端每个用户的Session对象存在Servlet 容器中,如果Tomcat服务器重起/当机的话该session就会丢失,而客户端的操作应为session的丢失而造成数据丢失,而且当前用户访问量巨大,每个用户的Session里存放大量的数据的话,那么就很占用服务器大量的内存,从而是服务器的性能受到影响。

 

TOMCAT持久化办法:
 Tomcat里,系统提供Session的持久化策略。其中对session的存储提供两种办法,一个是本地文件存储,一个是数据库存储

 


进入tomcat的配置文档目录/conf,可以看到context.xml文件,我们将在这里配置Session持久化,配置后将对所有的站点生效。
打开context.xml,在<Context>节点下添加如下<Manager>节点:
<Manager className="org.apache.catalina.session.PersistentManager" >
    debug=0
    saveOnRestart="true"
    maxActiveSession="-1"
    minIdleSwap="-1"
    maxIdleSwap="-1"
    maxIdleBackup="-1"
    <Store className="org.apache.catalina.session.FileStore" directory="../session" />//这里代表的是文件持久化.也可               //以自己实现Store
</Manager>

JDBCStore配置:

<Store calssName="org.apache.catalina.JDBCStore" driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/tomsessionDB?user=root&password="
sessionTable="tomcat_session" sessionIdCol="session_id" sessionDataCol="session_data"
sessionValidCol="session_valid" sessionMaxInactiveCol="max_inactive"
sessionLastAccessedCol="last_access" sessionAppCol="app_name" checkInterval="60" debug="99" />
---------表
create table tomcat_session(session_id,session_data,session_valid,max_inactive,last_access,app_name)

 


className:Session的管理类,tomcat将会通过定义的接口来应用该类生成的对象。
 debug:Session管理器的跟踪级别。
saveOnRestart:(true/false)配置服务重启工程中对session的处理,若为true,则关闭前把有效的session保存,启动后重新载入

maxActiveSession:活动状态Session的最大数,为-1时则不限制,否则Session Manager将会把超出的Session对象转移到Session Store中。

minIdleSwap:Session不活动的最短时间,超过该时间,Session Manager 可能会把该Session对象转移到Session Store中,单位为秒。

maxidleSwap:Session不活动的最长时间,超过该时间,Session Manager 将会把该Session对象转移到Session Store中,该Session将不在内存中。

maxidleBackup: Session不活动的最长时间,超过该时间,Session Manager 将会把该Session对象备份到Session Store中,但该Session对象依然存在内存中。

<Store>指定实现持久化的类和Session存放的文件位置,如该例子中指定的类是:org.apache.catalina.session.FileStore,而Session对象存放的目录则是tomcat根目录下的 session文件夹(当然自己创建)

 


配置完后可以写一个简单的jsp页面,在页面上显示本次用户访问的Session ID,然后重起tomcat,再刷新该页面,可以看到该Session Id不变,而在/session目录下自动生成一个以session id为名,以“session”为扩展名的文件。该Session的持久化配置成功

 

 

 

TOMCAT的另一种SESSION持久化方法:

继承StardSession,实现相应方法。当往SESSION里面保存属性的时候,调用setAttribute方法,setAttribute方法的实现大概如下:

MemcacheClient mc =new MemcacheClient();

public void setAttribute(String name, Object value) {

        String key = name + this.getId();
        if(mc.keyExists(key)){
            mc.replace(key, value);
        }else{
              mc.set(key, value);
         }
    }

使用SESSIONID+属性名.通MemcachedClient.set()方法存入Memcached中.具体实现在附件中(有借用他人代码)

Context.xml配置文件

<Manager className="org.apache.catalina.session.MemcachedManager" debug=0
    saveOnRestart="true"
    maxActiveSession="-1"
    minIdleSwap="-1"
    maxIdleSwap="-1"
    maxIdleBackup="-1" serverlist="127.0.0.1:11211" >

zz:http://blog.csdn.net/onlyzhangqin/archive/2008/09/06/2890592.aspx
分享到:
评论

相关推荐

    Tomcat_Session的持久化

    Tomcat_Session的持久化,详细讲解tomcatsession管理的原理和持久化原理

    Session持久化

    在tomcat实现对session的持久化,如果浏览的用户过大,避免服务器的内存消耗太大,影响性能。

    Tomcat7基于Redis的Session共享

    原理就是继承tomcat的manager接口,接管session的持久化工作 2.使用 ◦使用的时候就是Maven打包,放到tomcat的lib里面 (主要是三个包:commons-pool2-2.3.jar;jedis-2.7.3.jar;tomcat7-redis-cluster-1.0.0.jar) ...

    Tomcat8基于Redis的Session共享

    原理就是继承tomcat的manager接口,接管session的持久化工作 2.使用 ◦使用的时候就是Maven打包,放到tomcat的lib里面 (主要是三个包:commons-pool2-2.3.jar;jedis-2.7.3.jar;tomcat7-redis-cluster-1.0.0.jar) ...

    tomcat-redis-session-manager-by-eguid.zip

    实现tomcat 8及以后版本的tomcat集群的session持久化操作,基于redis实现tomcat容器的session的持久化 tomcat-redis-session-manager-by-eguid.jar+jedis-2.9.0.jar+commons-pool2-2.2.jar集合包

    Tomcat集群Session共享

    Tomcat集群解决Session共享的方案: 1. 基于Cookie+Redis+Filter解决方案实现过程优缺点踩坑 2. Tomcat内置的Session复制方案实现过程优...4. 基于Session持久化方案 5. 基于Spring-Session无侵入性方案实现过程优缺点

    tomcat-redis-session-manager-by-eguid.jar

    实现tomcat 8及以后版本的tomcat集群的session持久化操作,基于redis实现tomcat容器的session的持久化 本项目是基于jcoleman的二次开发版本 1、修改了小部分实现逻辑 2、去除对juni.jar包的依赖 3、去除无效代码和老...

    通过Nginx+Tomcat+Redis实现持久会话

    Redis的特点就是可以将session持久化。样才能真正实现后台多个Tomcat负载平衡,用户请求能够发往任何一个tomcat主机。 keeplived、zabbix与ansible暂不在本文章的范围当中,会在之后的文章逐一进行讲解 实验架构图 ...

    how-tomcat-works

    4.2.1 持久化连接 18 4.2.2 编码 18 4.2.3 状态码100的使用 19 4.3 Connector接口 19 4.4 HttpConnector类 20 4.4.1 创建ServerSocket 20 4.4.2 维护HttpProcessor对象池 20 4.4.3 提供Http请求服务 21 4.5 ...

    Tomcat中的Session与Cookie深入讲解

    前言 ...本文首发于公众号顿悟源码. 解决办法就是使用 Cookie,它由服务器返回给浏览器,浏览器缓存并在每次请求时将 cookie 数据提交到服务器。Cookies 在请求中以明文传输,且大小限制 4KB,显然把所有状态数据保存...

    How Tomcat Works: A Guide to Developing Your Own Java Servlet Container

    4.2.1 持久化连接 18 4.2.2 编码 18 4.2.3 状态码100的使用 19 4.3 Connector接口 19 4.4 HttpConnector类 20 4.4.1 创建ServerSocket 20 4.4.2 维护HttpProcessor对象池 20 4.4.3 提供Http请求服务 21 4.5 ...

    谈谈业务中使用分布式的场景1

    2.集群中,各个应用服务器提供了session复制的功能,tomcat和jboss都实现了这样的功能 3.session的持久化,使用数据库来保存session

    编程入门_Eclipse教程

    4.1.1. 对持久化对象的要求 35 4.1.2. OID 36 5. Eclipse使用技巧 36 5.1. 一般插件安装 36 5.2. 自定义注释 37 5.3. 常用的快捷键 37 5.4. 代码编写小技巧 37 5.5. Eclipse中恢复已删除文件 37 5.6. Eclipse中轻松...

    仿当当网mvc架构设计

    具体描述:独立完成项目的各个开发模块,本系统采用了典型MVC的三层架构,利用jsp实现表现层,struts实现业务逻辑,hibernate作数据持久化处理。利用hibernate的事务逻辑线程session实现事务的统一处理。Jsp只负责...

    SSH的jar包.rar

    SSH 通常指的是 Struts2 做前端控制器,Spring 管理各层的组件,Hibernate 负责持久化层。 一个请求在Struts2框架中的处理大概分为以下几个步骤: 1、客户端初始化一个指向Servlet容器(例如Tomcat)的请求 2、这...

    尚硅谷_Redis.docx

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    尚硅谷Redis入门视频

    在本课程中,你将了解Redis是什么、能干什么、如何用,了解NoSQL的使用场景和概念,快速掌握Redis的安装配置、五大数据类型、常用操作命令、Redis持久化、主从复制、事务控制以及用Jedis操作进行Java开发等知识。...

    jsp servlet 入门学习资料-新手一看就懂

    2.2.3 持久化 2.2.4 用户化 2.3 Java Servlet 2.3.1 HTTP Servlet API 2.3.2 系统信息 2.3.3 传送HTML信息 2.4 SQL语言 2.4.1 SQL子类型 2.4.2 SQL语言的具体命令和使用 2.5 JDBC 2.5.1 什么是 JDBC ...

Global site tag (gtag.js) - Google Analytics