Stores session of Apache Tomcat in Redis and allows to distribute requests across a cluster of Tomcat servers. Implements non-sticky session management backed by Redis.
Supports Apache Tomcat 7.x, 8.x, 9.x, 10.x
Add RedissonSessionManager
in global context - tomcat/conf/context.xml
or per application context - tomcat/conf/server.xml
<Manager className="org.redisson.tomcat.RedissonSessionManager"
configPath="${catalina.base}/redisson.conf"
readMode="REDIS" updateMode="DEFAULT" broadcastSessionEvents="false"
keyPrefix=""/>
keyPrefix
- string prefix applied to all Redis keys. Allows to connect different Tomcat environments to the same Redis instance.
readMode
- read Session attributes mode. Two modes are available:
MEMORY
- stores attributes into local Tomcat Session and Redis. Further Session updates propagated to local Tomcat Session using Redis-based events.REDIS
- stores attributes into Redis only. Default mode.
broadcastSessionEvents
- if true
then sessionCreated
and sessionDestroyed
events are broadcasted across all Tomcat instances and cause all registered HttpSessionListeners to be triggered. Default is false
.
broadcastSessionUpdates
- if true
and readMode=MEMORY
then session updates are broadcasted across all Tomcat instances. Default is true
.
updateMode
- Session attributes update mode. Two modes are available:
DEFAULT
- session attributes are stored into Redis only throughSession.setAttribute
method. Default mode.AFTER_REQUEST
- all session attributes are stored into Redis after each request. It useful in case when some objects stored in session change own state withoutSession.setAttribute
method execution.
configPath
- path to Redisson YAML config. See configuration wiki page for more details.
Amount of Redisson instances created by Tomcat for multiple contexts could be reduced through JNDI registry:
- Add shared redisson instance produced by
JndiRedissonFactory
intotomcat/conf/server.xml
inGlobalNamingResources
tag area:
<GlobalNamingResources>
<Resource name="bean/redisson"
auth="Container"
factory="org.redisson.JndiRedissonFactory"
configPath="${catalina.base}/conf/redisson.yaml"
closeMethod="shutdown"/>
</GlobalNamingResources>
- Add
JndiRedissonSessionManager
with resource link to redisson instance intotomcat/conf/context.xml
<ResourceLink name="bean/redisson"
global="bean/redisson"
type="org.redisson.api.RedissonClient" />
<Manager className="org.redisson.tomcat.JndiRedissonSessionManager"
readMode="REDIS"
jndiName="bean/redisson" />
Tomcat 7.x - redisson-tomcat-7-3.17.2.jar
Tomcat 8.x - redisson-tomcat-8-3.17.2.jar
Tomcat 9.x - redisson-tomcat-9-3.17.2.jar
Tomcat 10.x - redisson-tomcat-10-3.17.2.jar
Try Redisson PRO with ultra-fast performance and support by SLA.