本文将介绍tomcat7、tomcat8、spring多种方式如何实现单台redis和集群redis如何配置session共享(其中tomcat8只能实现单台redis共享)
1、所需lib包如下:
tomcat7依赖包如下:
commons-pool2-2.4.2.jarjedis-2.9.0.jartomcat-redis-session-manager-2.1.0.jartomcat8依赖包如下:
commons-pool2-2.4.2.jarjedis-2.9.0.jartomcat85-session-redis-1.0.jar2、测试war包如下:
war包:my_project.war源码:my_project.zip3、Tomcat如下:
apache-tomcat-7.0.82.tar.gzapache-tomcat-8.5.16.tar.gz1、====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值是否一致
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"redisNodes="10.100.160.132:6379" timeout="300000" maxRedirections="6" maxWaitMillis="-1" maxTotal="1000" minIdle="8" maxIdle="100" maxInactiveInterval="60"/>
<!-- 集群redis session 共享配置,已验证 -->
<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve"/> <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"redisNodes="10.100.160.132:7001,10.100.160.132:7002,10.100.160.133:7003,10.100.160.133:7004,10.100.160.134:7005,10.100.160.134:7006" timeout="300000" maxRedirections="6" maxWaitMillis="-1" maxTotal="1000" minIdle="8" maxIdle="100" maxInactiveInterval="60"/>
2、将lib包和war包分别拷贝至至少两个tomcat的lib和webapps目录
3、启动tomcat,浏览器访问Nginx负载均衡地址:http://10.100.160.135/my_project/indexServlet,观察返回的session值是否一致
源码:ssm_source.rar
补丁: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、待续
