使用tomcat-redis-session-manager实现session共享
tomcat-redis-session-manager介绍
tomcat-redis-session-manager是一个开源项目。地址:
https://github.com/jcoleman/tomcat-redis-session-manager
会话管理器的实现,用于将会话存储在Redis中,以便在Tomcat服务器群集之间轻松分配请求。会话被实现为非粘性的-也就是说,每个请求都可以发送到集群中的任何服务器(与Apache提供的Tomcat集群设置不同)
会话在创建后立即存储到Redis中,以供其他服务器使用。会话是根据Redis的请求直接加载的(但是在同一请求上下文中对会话的后续请求将返回ThreadLocal缓存,而不是多次访问Redis。)为了尽可能避免冲突(和丢失的写操作),会话数据如果会话已修改,则仅在Redis中更新
管理器依靠Redis的本机到期功能来使密钥自动过期,从而避免了不断在整个会话列表中搜索过期会话的开销
会话中存储的数据必须可序列化
该项目同时支持Tomcat 6和Tomcat7。
当前不支持Tomcat 8,也没有进行任何测试或开发
具体做法
该项目仅支持tomcat6和tomcat7,对于tomcat8不支持,但可以通过二次开发实现tomcat8的支持.
GitHub上有人发布了对Tomcat8的支持
1.编辑tomcat/conf/context.xml文件
2.在<Context>
节点下进行如下配置:
注意:
className一定得对应类所在的位置!包结构不同此处必然不同.
若redis有配置密码则使用下面注释配置
<Valve className="com.*.*.RedisSessionHandlerValve"/>
<Manager className="com.*.*.RedisSessionManager"
host="localhost"
port="6379"
database="0"
password="123"
maxInactiveInterval="60" />
3.Maven仓库下载上面简介中提及的两个jar包
将下载的两个jar包与对tomcat8支持的jar放到tomcat/lib目录中
4.基于maven提供的项目模板快速创建一个web项目。
5.修改默认的index.jsp页面,以供区别session共享是否生效.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Tomcat1</title>
</head>
<body>
SessionID:<%=session.getId()%>
<br>
SessionIP:<%=request.getServerName()%>
<br>
SessionPort:<%=request.getServerPort()%>
</body>
</html>
6.tomcat启动信息配置
7.验证
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/137159.html