锁定老帖子 主题: 奇怪的session混乱问题
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-09-26
问题:偶尔两个帐号在两台不同的机器上,a帐户获取了b帐号的session值 public ActionForward loadDialogList4Inbox(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response)throws Exception{ MailService service = (MailService)this.getBean("mailService"); List labels = (List)request.getSession().getAttribute("labels"); if(labels == null){ labels = service.loadLabelWithTotal(this.getUserId()); request.getSession().setAttribute("labels",labels); } return mapping.findForward("dialogList"); } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-09-26
刚刚在
技能云http://www.itechtag.com/about 遇到了。。。 用的是温柔一刀的账号。。。。。 |
|
返回顶楼 | |
发表时间:2007-09-26
自己顶一下,楼上的看起来不是在回复本贴,并且在列表页面统计本帖回复数为0(不计本回复),第一次发贴就bug,呵呵
|
|
返回顶楼 | |
发表时间:2007-09-26
楼上的,莫非这是传说中的request 混乱了?
session也能混乱就太恐怖了。 我没有遇到过,只是猜测下。根据原理,sessionID 理论上是唯一的,也许多线程等原因让这个理论不成立了? |
|
返回顶楼 | |
发表时间:2007-09-26
咋没人出来解个惑啊?自己顶
|
|
返回顶楼 | |
发表时间:2007-09-27
从代码里没看出问题来,你的Web应用部署方式是怎样的,我以前遇到过取不到session值的问题,是因为把tomcat里的context和host的appBase指向了同一个目录,结果实质上产生了两个Web应用。
一般这种奇怪的问题不太可能是服务器出错,很可能是哪儿犯低级错误了,只有自己一步步检查。 this.getUserId()); 晕,没仔细看,这句是什么? |
|
返回顶楼 | |
发表时间:2007-09-27
这是公司的基类中直接获取登录用户的id
this.getUserId() |
|
返回顶楼 | |
发表时间:2007-09-27
问题就是这里了,action的基类居然是把该值int userId=this.getUserId()作实例变量保存.狂晕!
|
|
返回顶楼 | |
发表时间:2007-09-27
服务器不可能出问题的,肯定是代码问题,将session作为实例变量了。
|
|
返回顶楼 | |
发表时间:2007-09-27
public class BaseMappingDispatchAction extends MappingDispatchAction {
private static Logger logger; protected int userId, orgId; protected String userAccount, userName, orgName; protected final Log log = LogFactory.getLog(getClass()); private static ApplicationContext ctx = null; public BaseMappingDispatchAction() { } } 这是基类,问题就是它定义的是实例变量而不是局部变量,并发访问时我获取了错误的用户id,于是获取了错误的值放在session中了,而不是session混乱了 |
|
返回顶楼 | |