在docker里使用tomcat7 + redis实现session共享

本文详细介绍了如何在Linux环境下使用Docker搭建Tomcat集群,并通过Redis实现session共享,使得多个Tomcat实例间能够共享session信息,实现跨服务器的用户状态同步。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

模拟环境:linux安装docker,然后分别新建jax-tomcat1、jax-tomcat2、jax-redis容器,实现tomcat1和tomcat2可以共享session,既在jax-tomcat1程序里登陆之后,在jax-tomcat2里面实现免登录。并且准备一个charge.war的web程序包

1.下载安装tomcat

https://blog.youkuaiyun.com/buyaopingbixiazai/article/details/89344211

2.下载安装redis

https://blog.youkuaiyun.com/buyaopingbixiazai/article/details/89303538

3.配置tomcat,分别配置jax-tomcat1和jax-tomcat2

3.1下载jar包

  1. jedis.jar 
  2. commons-pool2.jar
  3. tomcat-redis-session-manager-1.2-tomcat-7.jar

下载链接:https://download.youkuaiyun.com/download/buyaopingbixiazai/11120783

3.2把jar包放到tomcat的lib目录下,并且把propersite文件copy到conf目录下

propersite下载链接:https://download.youkuaiyun.com/download/buyaopingbixiazai/11122105

命令:docker cp 项目 容器名称(容器ID):/usr/local/tomcat/webapps

我是把jar包放到root目录下边了,根据自己jar包的位置自行修改命令

[root@localhost ~]# docker cp /root/commons-pool-1.5.4.jar jax-tomcat1:/usr/local/tomcat/lib   

然后依次把三个jar包都copy到jax-tomcat1的lib目录下

3.3修改context.xml,添加以下内容

tomcat容器需要安装vim才能使用,安装教程:https://blog.youkuaiyun.com/buyaopingbixiazai/article/details/89330848


<Valve className="com.radiadesign.catalina.session.RedisSessionHandlerValve" />
<Manager className="com.radiadesign.catalina.session.RedisSessionManager"
        host="127.0.0.1"
        port="6379"
        database="0"
        maxInactiveInterval="60" />

3.4复制charge.war到tomcat的webapps目录下

命令:docker cp 项目 容器名称(容器ID):/usr/local/tomcat/webapps

3.5修改server.xml

tomcat容器需要安装vim才能使用,安装教程:https://blog.youkuaiyun.com/buyaopingbixiazai/article/details/89330848

1).首先进入jax-tomcat1容器,命令:docker exec -it 容器名称(容器ID) /bin/bash,目录如下

 [root@localhost ~]# docker exec -it jax-tomcat2 /bin/bash
root@7f9f5c1e142f:/usr/local/tomcat# ls
BUILDING.txt     NOTICE         RUNNING.txt  include  native-jni-lib  work
CONTRIBUTING.md  README.md      bin          lib      temp
LICENSE          RELEASE-NOTES  conf         logs     webapps
root@7f9f5c1e142f:/usr/local/tomcat#

2). 进入conf目录下,在server.xml文件添加以下内容:

<Context docBase="charge" path=""  />

命令说明:

docBase="charge" : charge为上传到tomcat下边webapps的war包名称(war包会自动解压为一个同名的文件加),charge可以自行修改成自己的war包名称

path="": 路径一定要为空,如果不为空每个程序都会和tomcat创建一个sessionid,就没办法实现session共享

3). 修改完之后,退出容器,命令:exit

3.6重启tomcat

命令:docker restart 容器名称(容器ID)

4.重复步骤3,把第二个tomcat也配置一下!!! 

 

5.登陆系统测试:先登陆tomcat1里的程序,tomcat2的程序实现了免登录,并且redis只记录了一个session

 

参考文章:https://github.com/ran-jit/tomcat-cluster-redis-session-manager

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

buyaopingbixiazai

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值