0 0

SOS!session串号现象10

串号的解释:A帐号登录后,发现登录信息是B帐号
环境:cdn linux nginx tomcat6 oracle
框架:struts2 spring hibernate proxool

现象:A登录的时候,显示是A的信息,但是在使用的过程发现竟然变成B的信息,而且可以用B的信息进行操作。
检查过所有action的配置,全部都有加scope="prototype"

所有的action都继承一个BaseAction extends ActionSupport implements SessionAware

基类BaseAction 里面,Map session的变量是私有的,子类的调用仅仅是
MemberLoginSession memberSession = (MemberLoginSession)super.getSession().get(Constant.MEMBER_LOGIN_SESSION);

全部确认过memberSession在登录后,只有get,有一个set方法,但是是放在action里面处理

所有的MemberLoginSession只在action\service,有声明成action的一个属性,但不会声明为service的一个属性

这种现象是极少数有产生的。
开始怀疑是CDN的问题,但是提供商检查后,所有动态页面都没有缓存。
而且这个现象重现不了,期待各位大虾给个思路。感谢了!
2008年11月12日 23:05

3个答案 按时间排序 按投票排序

0 0

赞赞赞赞赞赞赞赞赞

2016年12月15日 15:12
0 0

做测试时遇到过这样的问题

2008年11月27日 19:26
0 0

这个东西挺麻烦的;

一般2中原因:
1.网络问题,有时候网络代理会把不同的客户对应的IP认为是同一个;不是页面缓存,是网络缓存;通过代理上网的方式容易出现这种情况;(较少见)

2.代码问题,
Struts1以前就有这个严重BUG的,不知道S2中是否会有问题;
主要检查自己的代码,WEB层属于多线程处理,最好不要存在任何成员变量,一旦集成,很容易出现多线程共享变量的情况,到时候问题就出现了.

建议所有的变量采用局部变量方式声明使用;

不看具体代码,原因也难查,LZ仔细检查下代码吧..我感觉10有8,9是代码问题.

2008年11月13日 08:50

相关推荐

Global site tag (gtag.js) - Google Analytics