Giter VIP home page Giter VIP logo

tomcat-cluster-redis-session-manager's Introduction

Tomcat Clustering Redis Session Manager

The Redis session manager is pluggable one. It stores session into Redis for easy distribution of HTTP Requests across a cluster of Tomcat servers.

Here the Sessions are implemented as non-sticky (means, each request can able to go to any server in the cluster, unlike the Apache provided Tomcat clustering setup.)

Request Sessions will be stored into Redis immediately (Session attributes must be Serializable), for the use of other servers. When tomcat receives a request from the client, Sessions are loaded directly from Redis.

Supports Redis default, sentinel and cluster mode, based on the configuration.

Going forward, we no need to enable sticky session (JSESSIONID) in Load Balancer.

Supports:

  • Apache Tomcat 7
  • Apache Tomcat 8
  • Apache Tomcat 9
  • Apache Tomcat 10

Downloads: Total Downloads

Buy Me A Coffee

Maven configuration

<repository>
  <id>repsy</id>
  <name>tomcat-cluster-redis-session-manager-repo</name>
  <url>https://repo.repsy.io/mvn/ranmanic/tomcat-session-manager</url>
</repository>

<dependency>
  <groupId>tomcat-session-manager</groupId>
  <artifactId>redis</artifactId>
  <version>4.0</version>
</dependency>

Pre-requisite:

  1. jedis.jar
  2. commons-pool2.jar
  3. commons-logging.jar

more details.. https://github.com/ran-jit/tomcat-cluster-redis-session-manager/wiki

Steps to be done,

  1. Copy the downloaded jars to your tomcat/lib directory.
tomcat/lib/
  1. Add tomcat system property "catalina.base".
catalina.base="TOMCAT_LOCATION"
example: env "catalina.base=/opt/tomcat" bash
  1. Copy the redis-data-cache.properties file to your tomcat/conf directory and update your Redis server details.
tomcat/conf/redis-data-cache.properties
  1. Add the below two lines in your tomcat/conf/context.xml file.
<Valve className="tomcat.request.session.redis.SessionHandlerValve" />
<Manager className="tomcat.request.session.redis.SessionManager" />
  1. Verify the session expiration time in tomcat/conf/web.xml file.
<session-config>
  <session-timeout>60</session-timeout>
</session-config>

Note:

  • All your session attribute values must implement java.io.Serializable.

Configuration Properties:

PropertyDescription
redis.hostsRedis server running instance IP address and port number
- ex: 127.0.0.1:6379, 127.0.0.2:6379, 127.0.0.2:6380, ..
- default: 127.0.0.1:6379
redis.passwordRedis protected password
redis.databaseRedis database selection. (Numeric value)
- default: 0
redis.timeoutRedis connection timeout
- default: 2000 ms
redis.cluster.enabledTo enable redis cluster mode
- default: false
- supported values: true/false
redis.sentinel.enabledTo enable redis sentinel mode
- default: false
- supported values: true/false
redis.sentinel.masterRedis sentinel master name
- default: mymaster
lb.sticky-session.enabledTo enable redis and standard session mode

If enabled,
  1. Must be enabled sticky session in your load balancer configuration. Else this manager may not return the updated session values
  2. Session values are stored in local jvm and redis
  3. If redis is down/not responding, requests uses jvm stored session values to process user requests. Redis comes back the values will be synced
- default: false
session.persistent.policiessession persistent policies.

- policies - DEFAULT, SAVE_ON_CHANGE, ALWAYS_SAVE_AFTER_REQUEST
  1. SAVE_ON_CHANGE: every time session.setAttribute() or session.removeAttribute() is called the session will be saved.
  2. ALWAYS_SAVE_AFTER_REQUEST: force saving after every request, regardless of whether or not the manager has detected changes to the session.
- default: DEFAULT
redis.sso.timeoutsingle-sign-on session timeout.
- default: 0 ms (-no expiry)

tomcat-cluster-redis-session-manager's People

Contributors

ran-jit avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.