Tomcat 集中缓存sesssion并实现统一登录

光石头 发布于 2011/05/21 09:34
阅读 3K+
收藏 10

实现思路:

1.使用 Memcached Session Manager 开源项目把tomcat的session序列化到memcached,使tomcat集中管理sesssion,这样可以实现tomcat集群的横向扩展,不必考虑session复制等问题

 主要配置文件如下 tomcat/conf/server.xml

  <Context path="" docBase="ROOT">

  <Manager className="de.javakaffee.web.msm.MemcachedBackupSessionManager"

    memcachedNodes="n1:localhost:11211"

    requestUriIgnorePattern=".*\.(ico|png|gif|jpg|css|js)$"

    transcoderFactoryClass="de.javakaffee.web.msm.serializer.kryo.KryoTranscoderFactory"

    />

</Context>

 

2.修改tomcat Request.java 的源码,使JSESSION的cookie作用域为主域名 例如 oschina.com

这样 t1.oschina.com 和 t2.oschina.com 共享一个JSESSIONID 的cookie,后台tomcat的session是集中管理的,也就实现了 所有二级域名下的 session共享 实现统一登录

 

这样实现统一登录的缺陷: 

  跨主域名登录很难实现

优势:tomcat横向扩展,session天然共享 优势不言而喻!

加载中
0
独孤求胜16
独孤求胜16
最好别修改tomcat源码。。。
光石头
光石头
请教,tomcat怎么配置才能该表默认的cookie的作用域?
0
hotkit
hotkit

http://tomcat.apache.org/tomcat-7.0-doc/config/context.html

see:Common Attributes

sessionCookieDomain, sessionCookieName, sessionCookiePath


光石头
光石头
嗯,sessionCookieDomain 就要写死了,我是根据请求路径截取判断的,这样是为了应对不同的应用
返回顶部
顶部