模拟环境: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包
- jedis.jar
- commons-pool2.jar
- 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