Web Session Management
Tomcat Session¶
Redisson implements Redis or Valkey based Tomcat Session Manager. It stores session of Apache Tomcat in Redis or Valkey and allows to distribute requests across a cluster of Tomcat servers. Implements non-sticky session management backed by Redis.
Supports Apache Tomcat 7.x up to 11.x
Usage:
1. Add session manager
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 keys. Allows to connect different Tomcat environments to the same Redis or Valkey 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 or Valkey 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 or Valkey only through theSession.setAttribute
method. Default mode.AFTER_REQUEST
- In
readMode=REDIS
all changes of session attributes made through theSession.setAttribute
method are accumulated in memory and stored into Redis or Valkey only after the end of the request. - In
readMode=MEMORY
all session attributes are always stored into Redis or Valkey after the end of the request regardless of theSession.setAttribute
method invocation. It is useful in case when some objects stored in session change their own state withoutSession.setAttribute
method execution. Updated attributes are removed from all other Session instances ifbroadcastSessionUpdates=true
and reloaded from Redis or Valkey when these attributes are requested.
- In
configPath
- path to Redisson YAML config. See configuration page for more details. In case session manager is configured programatically, a config object can be passed using the setConfig()
method
Shared Redisson instance
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" />
2. Copy two jars into TOMCAT_BASE/lib
directory:
Tomcat 7.x - redisson-tomcat-7-3.38.1.jar
Tomcat 8.x - redisson-tomcat-8-3.38.1.jar
Tomcat 9.x - redisson-tomcat-9-3.38.1.jar
Tomcat 10.x - redisson-tomcat-10-3.38.1.jar
Tomcat 11.x - redisson-tomcat-11-3.38.1.jar
Upgrade to Redisson PRO with advanced features.
Spring Session¶
For Spring Session usage please refer to Spring Session article.
Micronaut Session¶
For Micronaut Session usage please refer to Micronaut Session article.