将Tomcat的会话持久化到外部的Redis的方法

这篇文章是关于如何实现会话的外部持久化(非粘性会话)的。

环境

    • Java 1.6.0_45

 

    • Apache Tomcat 6.0.48

 

    Redis 3.2.7
$ java -version
java version "1.6.0_45"
Java(TM) SE Runtime Environment (build 1.6.0_45-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.45-b01, mixed mode)

$ sh version.sh
Using CATALINA_BASE:   /opt/apache-tomcat-6.0.48
Using CATALINA_HOME:   /opt/apache-tomcat-6.0.48
Using CATALINA_TMPDIR: /opt/apache-tomcat-6.0.48/temp
Using JRE_HOME:        /usr
Using CLASSPATH:       /opt/apache-tomcat-6.0.48/bin/bootstrap.jar
Server version: Apache Tomcat/6.0.48
Server built:   Nov 7 2016 20:05:27 UTC
Server number:  6.0.48.0
OS Name:        Linux
OS Version:     4.9.12-moby
Architecture:   amd64
JVM Version:    1.6.0_45-b06
JVM Vendor:     Sun Microsystems Inc.

$ redis-server --version
Redis server v=3.2.7 sha=00000000:0 malloc=jemalloc-4.4.0 bits=64 build=4b4d638eb6ec5175

处理

使用jcoleman/tomcat-redis-session-manager工具为Apache Tomcat提供基于Redis的非粘性会话存储。

罐子获取

    • tomcat-redis-session-manager-1.2-tomcat-6.jar

ここからダウンロードします。

commons-pool-1.6.jar

ここからダウンロードします。

jedis-2.0.0.jar

ここからダウンロードします。

罐子的设置

将下载的Jar文件放置在${CATALINA_HOME}/bin目录下。

配置更改

将以下内容添加到位于${CATALINA_HOME}/conf目录下的context.xml中。

    <Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
    <Manager className="com.radiadesign.catalina.session.RedisSessionManager"
         host="${redis host}"
         port="${redis port}"
    />

${redis host}: Redis的主机
${redis port}: Redis的端口

通过这样做,我们可以将Session持久化到Redis中。

bannerAds