tomcat 使用 memcached管理session ,并且实现统一登录

本文介绍如何通过Memcached集中式缓存解决Tomcat集群的会话共享问题,并实现跨域统一登录方案。详细说明了配置步骤及注意事项。

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

把tomcat的session存放在memcached 的集中式缓存中,所有的tomcat共享memcached中的httpsession,能够很好解决tomcat的集群负载,不用使用笨重的session复制,也能轻松解决session数据的同步

把所有的jar文件复制到 tomcat/lib下
把context.xml 复制到 tomcat/conf 下,注意修改memcached的连接
后台的session是共享的,如果前台的JSESSIONID也是共享的,不就可以实现统一登录了吗?
在同一域名下 例如 test1.abc.com 和 test2.abc.com 浏览器是允许共享cookie的,
只需要把JSESSIONID的作用域设定为 abc.com 就可以了
修改 tomcat org.apache.catalina.connector.Request.java
protected void configureSessionCookie(Cookie cookie) 这个方法
设置cookie作用域为主域名,例如 abc.com

最新的Tomcat7 已经可以自己定义jsessionid的作用域了.不需要再修改 request 了.

<Context path="/" docBase="D:\webapp" reloadable="false"
sessionCookiePath="/" sessionCookieDomain="abc.com" 
sessionCookieName="jsessionid"/>

tomcat 6.0.32 和 tomcat6.0.33的Request是不同的
我已经处理好了编译好的 class
Request.class 类在 tomcat/lib/catalina.jar/org/apache/catalina/connector

关于统一登录sso,如果跨域名,可以通过iframe创建不同域名下的jsessionid.跨语言可以通过jsessionid直接从memcached中查找值,找到当前用户的登陆信息,我目前是开了一个服务(jsp页面)让第三方系统调用,因为是在同一个浏览器中打开,可以获取jsessionid作为参数传递,直接从memcached中查找登陆信息.

下载打包资源

转载于:https://my.oschina.net/ydsakyclguozi/blog/223172

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值