开发遇到这样的问题,网站在不同域名下session是独立的,比如在www.example.com登录后,跳转到abc.example.com后原有session存的东西会丢失。主要原因是tomcat的session实现机制是将jsessionid放到cookie中,而cookie默认只能存在一个域名下,当切换域名后session id不同导致sesssion就不同。
解决办法,本人搜了一下网上的解决办法大多数都是通过修改源码的方式。比较麻烦,终于找到一种简单的方式。只需要在项目部署目录加入一个文件,路径为TOMCAT/webapps/project/META-INF/context.xml,将mydomain 替换成网站的域名.
<Context sessionCookieDomain=".mydomain.com" sessionCookiePath="/">
来源:https://issues.apache.org/bugzilla/show_bug.cgi?id=48379
注意,该解决方法仅支持TOMCAT版本6.0.27 以上。