tomcat 使用 memcached管理session ,并且实现统一登录
文章目录
实现逻辑
把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 了.
|
|
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中查找登陆信息.
代码包
文章作者 springrain
上次更新 2011-11-25