在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.
相关推荐
nignx 进行负载后session失效的完美解决,亲测可用
tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-redis-session-manager-1.2-tomcat-7-java-7tomcat-...
tomcat-redis-session-manager-1.2-tomcat-7.jar 和tomcat的context.xml配置文件。 2.7.2版包含 commons-pool2-2.4.1.jar jedis-2.7.2.jar tomcat-redis-session.jar 和tomcat的context.xml配置文件
tomcat7 + redis单点 session共享 jar 提供支持tomcat7 + redis单点 实现session共享的jar资源
tomcat7+redis集群 session共享jar 提供支持tomcat7 + redis单点 集群 实现session共享的jar资源
因tomcat7使用redis共享session,其他的包存在问题,自己编译后处理通过。 该包是在https://github.com/jcoleman/tomcat-redis-session-manager 将源码编译后的包。
tomcat7+redis完成session共享jar及配置
Tomcat7+Redis存储Session的案例,下载即可使用。学习使用
Session共享 tomcat7+redis的session共享实现,无需重新打包,直接放入tomcat lib中就可以使用,记得修改tomcat的content.xml
该资源是用于测试tomcat7-redis实现session共享的demo程序,用户可以直接下载使用
压缩文件包括tomcat-redis-session-manager-master-2.0.0.jar、jedis-2.7.3.jar、commons-pool2-2.3.jar三个jar包使用方法请参照https://github.com/jcoleman/tomcat-redis-session-manager。apache-tomcat-8.5.33....
Tomcat7+redis实现session共享
Tomcat8亲测可用 tomcat-redis-session-manager的jar包 修改了tomcat-redis-session-manager源码进行的编译生成的jar包
支持tomcat8的redis-session-manager-master,测试环境jdk-8u191、apache-tomcat-8.0.53
tomcat8+redis做共享session需要的jar包,包括tomcat-redis-session-manager-2.0.0.jar,jedis-2.5.2.jar,commons-pool2-2.2.jar,context.xml
redis实现session共享所有需要的jar tomcat6与tomcat7下的jar包
tomcat-redis-session-manager-2.0.0.jar,可用于Tomcat8下Redis的Session共享,亲测可用,还需要下载另外两个jar包:commons-pool2-2.4.2.jar和jedis-2.9.0.jar,maven仓库有,此处不再上传
tomcat redis session共享,支持tomcat7 jdk7、tomcat8 jdk7、tomcat8 jdk8、tomcat8.5 jdk7、tomcat9 jdk8