简介
本文将介绍tomcat7、tomcat8、spring多种方式如何实现单台redis和集群redis如何配置session共享(其中tomcat8只能实现单台redis共享)
第一步:环境准备
1、所需lib包如下:
tomcat7依赖包如下:
tomcat8依赖包如下:
2、测试war包如下:
- war包:my_project.war
- 源码:my_project.zip
3、Tomcat如下:
第二步:Tomcat8配置方式实现session共享
1、====tomcat conf/context.xml <Context>标签下====
<!-- com.orangefunction.tomcat.redissessions 是自定义maven项目的报名路径,切需要与maven 中 RedisSessionManager的serializationStrategyClass值一致 --> <!-- 单台redis session 共享配置,已验证(如果redis没有设置密码,需将password一行去掉)--> <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" host="127.0.0.1" port="6379" database="0" password="123456" maxInactiveInterval="60" /> <!-- 集群redis session 共享配置,未验证 --> <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" /> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager" maxInactiveInterval="60" sentinelMaster="mymaster" sentinels="127.0.0.1:26379,127.0.0.1:26380,127.0.0.1:26381,127.0.0.1:26382" /> |
2、将lib包和war包分别拷贝至至少两个tomcat的lib和webapps目录
3、启动tomcat,浏览器访问Nginx负载均衡地址:http://10.100.160.135/my_project/indexServlet,观察返回的session值是否一致
第三步:Tomcat7配置方式实现session共享
1、====tomcat conf/context.xml <Context>标签下====
<!-- com.orangefunction.tomcat.redissessions 是自定义maven项目的报名路径,切需要与maven 中 RedisSessionManager的serializationStrategyClass值一致 --> <!-- 单台redis session 共享配置,已验证(如果redis没有设置密码,需将password一行去掉)--> <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> <!-- 集群redis session 共享配置,已验证 --> <Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> |
2、将lib包和war包分别拷贝至至少两个tomcat的lib和webapps目录
3、启动tomcat,浏览器访问Nginx负载均衡地址:http://10.100.160.135/my_project/indexServlet,观察返回的session值是否一致
第三步: spring-session-data-redis实现session共享
补丁:ssm.war
直接降war包发布至tomcat,conf/content.xml无需任何修改
启动tomcat,浏览器访问Nginx负载均衡地址:http://10.100.160.135/my_project/indexServlet,观察返回的session值是否一致
问题总结
1、要存入session的对象必须实现序列化,否知会出现序列化错误
public class Test implements Serializable { private static final long serialVersionUID = 5021582410009851677L; ...... } |
2、待续