使用Memcached做分布式系统的Session存储?关闭node1,输入框中输入5,5,效果如下?证明Session继续生效。关闭
使用Memcached做分布式系统的Session存储
?关闭node1,输入框中输入5,5,效果如下
?证明Session继续生效。关闭浏览器后,再重新打开,因为SessionID变了,所以从Session中取不到任何数据了。还要声明一点就是放入Session要想存储对象必须实现序列化接口。
iteye新版本用起来好像怪怪的~~~~
6 楼 sunlightcs 2011-09-07 子域名session是怎么处理的呢?
比如:我是通过iteye.com登录的,在suhuanzheng7784877.iteye.com页面还可以看到我的登录信息。
tomcat不支持二级域名了。 7 楼 suhuanzheng7784877 2011-09-07 sunlightcs 写道子域名session是怎么处理的呢?
比如:我是通过iteye.com登录的,在suhuanzheng7784877.iteye.com页面还可以看到我的登录信息。
tomcat不支持二级域名了。
哦,是。这个就得需改一下应用服务器的源代码了,其实这位兄弟应该已经知道答案了吧。谢谢你的提醒,这个我应该写在这篇文章的下面的。除了修改源码,不知你有什么好办法?
资料如下:
http://my.oschina.net/baobao/blog/16727
8 楼 sunlightcs 2011-09-07 suhuanzheng7784877 写道sunlightcs 写道子域名session是怎么处理的呢?
比如:我是通过iteye.com登录的,在suhuanzheng7784877.iteye.com页面还可以看到我的登录信息。
tomcat不支持二级域名了。
哦,是。这个就得需改一下应用服务器的源代码了,其实这位兄弟应该已经知道答案了吧。谢谢你的提醒,这个我应该写在这篇文章的下面的。除了修改源码,不知你有什么好办法?
资料如下:
http://my.oschina.net/baobao/blog/16727
修改源代码,部署的时候比较麻烦了,升级tomcat也要改源码,移植也是个问题,蛮麻烦的。
如果当用户登录的时候,系统给用户分配一个ID(这个ID是唯一的,可以根据sessionID生成)并存在cookie里(因为cookie支持子域名),当再次访问的时候,可以根据这个ID,判断memcached中是否有记录,如果有记录,则表示用户已经登录,取出用户信息就可以了。
不知这种方法可行不啦,还没有试过 9 楼 suhuanzheng7784877 2011-09-07 sunlightcs 写道suhuanzheng7784877 写道sunlightcs 写道子域名session是怎么处理的呢?
比如:我是通过iteye.com登录的,在suhuanzheng7784877.iteye.com页面还可以看到我的登录信息。
tomcat不支持二级域名了。
哦,是。这个就得需改一下应用服务器的源代码了,其实这位兄弟应该已经知道答案了吧。谢谢你的提醒,这个我应该写在这篇文章的下面的。除了修改源码,不知你有什么好办法?
资料如下:
http://my.oschina.net/baobao/blog/16727
修改源代码,部署的时候比较麻烦了,升级tomcat也要改源码,移植也是个问题,蛮麻烦的。
如果当用户登录的时候,系统给用户分配一个ID(这个ID是唯一的,可以根据sessionID生成)并存在cookie里(因为cookie支持子域名),当再次访问的时候,可以根据这个ID,判断memcached中是否有记录,如果有记录,则表示用户已经登录,取出用户信息就可以了。
不知这种方法可行不啦,还没有试过
这个我也没试过,理论上可以视为一个解决方案。
cookie 中有个domain的选项,把他设到主域名上(不带www)就行了。例如 abc.com
操作cookie如下:
String JSESSIONID = request.getSession().getId();//获取当前JSESSIONID (不管是从主域还是二级域访问产生)
Cookie cookie = new Cookie("JSESSIONID", JSESSIONID);
cookie.setDomain(".test.com"); //关键在这里,将cookie设成主域名访问,确保不同域之间都能获取到该cookie的值,从而确保session统一
response.addCookie(cookie); //将cookie返回到客户端
request.getRequestDispatcher("indes.jsp").forward(request, response);