当前位置:首页 > 开发 > 开源软件 > 正文

在Apache Tomcat 7设置redis作为session store

发表于: 2014-01-10   作者:shiguanghui   来源:转载   浏览次数:
摘要: 在Apache Tomcat 7设置redis作为session store redis已经有组件支持直接在tomcat7中设置下将redis作为tomcat默认的session存储器,下面介绍下配置过程   1.从http://redis.io/下载redis,按照redis服务端   wget http://download.redis.io/redis-stabl

在Apache Tomcat 7设置redis作为session store

redis已经有组件支持直接在tomcat7中设置下将redis作为tomcat默认的session存储器,下面介绍下配置过程

 

1.从http://redis.io/下载redis,按照redis服务端

  wget http://download.redis.io/redis-stable.tar.gz

  tar xvzf redis-stable.tar.gz

  cd redis-stable

  make

  

2.启动redis

  cd RedisDirectory/src

  ./redis-server --port 6379

  

3.从http://tomcat.apache.org/download-70.cgi下载tomcat7,按照tomcat7

 

4.从https://github.com/xetorthio/jedis/downloads下载jedis作为java的redis客户端,

从https://github.com/jcoleman/tomcat-redis-session-manager/downloads下载tomcat的redis session manager插件,

从http://commons.apache.org/proper/commons-pool/download_pool.cgi下载apache的common pool包,

将这几个jar包拷贝到tomcat7的lib目录下

其实这里是有坑的,不过你们比较幸运,我帮你先踩了。如果你全部下载最新版本的话,肯定启动不起来。我试了很久才匹配这些jar的版本。在附件中可以下载。声明一下我用jdk是1.7的

 

5.修改tomcat的conf下的context.xml文件,添加或者修改下面的配置

  <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
  <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
  host="localhost" <!-- optional: defaults to "localhost" -->
  port="6379" <!-- optional: defaults to "6379" -->
  database="0" <!-- optional: defaults to "0" -->
  maxInactiveInterval="60" <!-- optional: defaults to "60" (in seconds) --> />

 

  

6.重启tomcat后就可以看到session存储到redis上了。

 

 

 

------------------------------------------------------------------------------------------------

Possible Issues

There is the possibility of a race condition that would cause seeming invisibility of the session immediately after your web application logs in a user: if the response has finished streaming and the client requests a new page before the valve has been able to complete saving the session into Redis, then the new request will not see the session.

This condition will be detected by the session manager and a java.lang.IllegalStateException with the message Race condition encountered: attempted to load session[SESSION_ID] which has been created but not yet serialized.will be thrown.

Normally this should be incredibly unlikely (insert joke about programmers and "this should never happen" statements here) since the connection to save the session into Redis is almost guaranteed to be faster than the latency between a client receiving the response, processing it, and starting a new request.

If you encounter errors, then you can force save the session early (before sending a response to the client) then you can retrieve the current session, and call currentSession.manager.save(currentSession) to synchronously eliminate the race condition. Note: this will only work directly if your application has the actual session object directly exposed. Many frameworks (and often even Tomcat) will expose the session in their own wrapper HttpSession implementing class. You may be able to dig through these layers to expose the actual underlying RedisSession instance--if so, then using that instance will allow you to implement the workaround.

在Apache Tomcat 7设置redis作为session store

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
在java web环境中一般都会有回话session存储登陆信息和用户信息,在负载均衡的时候都要处理这些回话
在java web环境中一般都会有回话session存储登陆信息和用户信息,在负载均衡的时候都要处理这些回话
背景: 很多时候,生产环境,需要多个tomcat协作,那么session的统一管理是一个首先需要解决的问题
发过篇关于apache 跟 tomcat 多站点配置 整合的,所以这部分今天就不多说了,主要还是标题为主 集群
集群背景介绍 1.1 术语定义 服务软体是b/s或c/s结构的s部分,是为b或c提供服务的服务性软件系统。 服
本文Apache+Tomcat集群配置 基于最新的Apache和Tomcat,具体是2011年4月20日最新的Tomcat和Apache集
Nginx+memcached+tomcat7+session 前言 最近在学习nginx+tomcat配置,随着不断深入,很快就遇到瓶颈
Tomcat的默认session有效期是:30分钟。 ================================== 可以在“tomcat安装目
开篇 使用Nginx作为Tomcat的负载平衡器,Tomcat的会话Session数据存储在Redis,能够实现0当机的7x24
今晚在帮一位朋友安装配置Apache Tomcat7和 MySQL 5.6时遇到了一些问题,然后自己特意回宿舍重新安
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号