友情提示: session共享需要在负载均衡的环境基础上搭建,负载均衡可以参考http://www.cnblogs.com/dahuandan/p/6753646.html
背景
使用反向代理服务器会引起session sticky(会话粘贴),意思是用户发起的多次请求被分发到多台服务器,请求的session没有被共享,解决这个问题的方案有很多种,在考虑性能、稳定以及自身架构的基础上,决定采取redis缓存会话实现session共享。
配置
tomcat配置
1、修改context.xml,在<Context>节点末尾内添加如下配置:
<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager" host="127.0.0.1" port="7000" password="123456" database="0" maxInactiveInterval="60" />
2、在tomcat7的lib目录下添加以下jar:
commons-pool-1.6.jar
jedis-2.1.0.jar
tomcat-redis-session-manager-1.2-tomcat-7-java-7.jar
spring整合jar包
commons-pool2-2.4.2.jar
jedis-2.5.1.jar
spring-data-redis-1.4.2.RELEASE.jar
测试
浏览器打开两个窗口,分别访问测试页面,我们可以看到两个tomcat服务器的sessionId一致: