Tomcat8 + Redis实现session集中管理
环境准备:
- 部署两台 tomcat 8.0
- 安装 redis 服务器
- 下载工具库( commons-pool2-2.3.jar、jedis-2.7.2.jar 、改良版的 tomcat-redis-session-manager.jar )
环境搭建:
- 拷贝 commons-pool2-2.3.jar、jedis-2.7.2.jar 、 tomcat-redis-session-manager.jar到tomcat安装目录的lib目录下
- 修改tomcat目录下的conf/context.xml,在其中加入下面代码,注意修改ip和端口
<Valve className="com.demo.redis_session.RedisSessionHandlerValve" />
<Manager className="com.demo.redis_session.RedisSessionManager"
host="127.0.0.1"
port="6379"
database="0"
maxInactiveInterval="60" />
简单测试:(访问两台tomcat服务器首页,并显示session)
- 启动redis服务器
- 修改两个tomcat目录下webapps/ROOT/index.jsp,加入红色部分的代码
<body>
<div>Tomcat 1</div>
<div><%= session.getId()%></div>
<div id="wrapper">
- 删除index.jsp的下面session配置的红色部分代码,开启session
<%@ page session="false" pageEncoding="UTF-8" contentType="text/html; charset=UTF-8" %>
- 修改tomcat目录下的conf/sever.xml配置文件,改动部分见红色代码(tomcat1 端口前加1,tomcat2端口前加2)
<Server port="18005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.startup.VersionLoggerListener" />
...
<Connector port="18080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
...
<Connector port="18009" protocol="AJP/1.3" redirectPort="8443" />
- 启动两台tomcat
- 打开浏览器访问tomcat1和tomcat2的首页(期望结果:两个页面显示的session id相同)
localhost:18080
localhost:28080
- 开启redis客户端,输入下面内容(期望结果:redis中存在页面相同session id的key)
keys *
参考文章: