14.5. Tomcat会话管理器(Tomcat Session Manager)
Redisson为Apache Tomcat集群提供了基于Redis的非黏性会话管理功能。该功能支持Apache Tomcat的6.x、7.x、8.x和9.x版。
Redisson实现的方式有别于现有的其他的Tomcat会话管理器(Tomcat Session Manager)。在每次调用HttpSession.setAttribute
接口方法时,以每一条会话的字段属性(Attribute)为单位,将修改内容记录在Redis的一个Hash结构里。相比之下,其他的现有解决方案都普遍采用的是:在任何一个字段属性更改时,将整个会话序列化后保存。Redisson的实现方式产生的优势显而易见:在为Tomcat集群提供高效的非黏性会话管理的同时,避免了同一客户端的多个并发请求造成业务逻辑混乱。
使用方法:
首先将
RedissonSessionManager
添加到相关的context.xml
(求中文文档连接)里:<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/redisson.conf" updateMode="DEFAULT" />
readMode
- 用来设定读取会话里各个属性的方式。主要分为以下两种:MEMORY
- 内存读取模式。直接从本地Tomcat中的会话里读取。这是默认情况。REDIS
- Redis读取模式。绕过本地会话信息,直接从Redis里读取。
updateMode
- 用来设定更新会话属性的方式。主要有以下两种:DEFAULT
- 会话的属性只能通过setAttribute
方法来储存到Redis里。这是默认请况。AFTER_REQUEST
- 再每次请求结束以后进行一次所有属性全量写入Redis。
configPath
- 是指的Redisson的JSON或YAML格式的配置文件路径。配置文件详见这里。拷贝相应的 两个 JAR包到指定的
TOMCAT_BASE/lib
目录下:JDK 1.8+适用redisson-all-3.6.4.jar
Tomcat 6.x适用redisson-tomcat-6-3.6.4.jarTomcat 7.x适用redisson-tomcat-7-3.6.4.jarTomcat 8.x适用redisson-tomcat-8-3.6.4.jarTomcat 9.x适用redisson-tomcat-9-3.6.4.jar
JDK 1.6+适用redisson-all-2.11.4.jar
Tomcat 6.x适用redisson-tomcat-6-2.11.4.jarTomcat 7.x适用redisson-tomcat-7-2.11.4.jarTomcat 8.x适用redisson-tomcat-8-2.11.4.jar