论坛首页 入门技术论坛

奇怪的session混乱问题

浏览 6917 次
该帖已经被评为新手帖
作者 正文
   发表时间:2007-09-26  
   服务器:jboss4.2
   问题:偶尔两个帐号在两台不同的机器上,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");
  }
   发表时间:2007-09-26  
刚刚在
技能云http://www.itechtag.com/about
遇到了。。。
用的是温柔一刀的账号。。。。。
0 请登录后投票
   发表时间:2007-09-26  
自己顶一下,楼上的看起来不是在回复本贴,并且在列表页面统计本帖回复数为0(不计本回复),第一次发贴就bug,呵呵
0 请登录后投票
   发表时间:2007-09-26  
楼上的,莫非这是传说中的request 混乱了?

session也能混乱就太恐怖了。

我没有遇到过,只是猜测下。根据原理,sessionID  理论上是唯一的,也许多线程等原因让这个理论不成立了?
0 请登录后投票
   发表时间:2007-09-26  
咋没人出来解个惑啊?自己顶
0 请登录后投票
   发表时间:2007-09-27  
从代码里没看出问题来,你的Web应用部署方式是怎样的,我以前遇到过取不到session值的问题,是因为把tomcat里的context和host的appBase指向了同一个目录,结果实质上产生了两个Web应用。
一般这种奇怪的问题不太可能是服务器出错,很可能是哪儿犯低级错误了,只有自己一步步检查。

this.getUserId());   

晕,没仔细看,这句是什么?
0 请登录后投票
   发表时间:2007-09-27  
这是公司的基类中直接获取登录用户的id
this.getUserId()
0 请登录后投票
   发表时间:2007-09-27  
问题就是这里了,action的基类居然是把该值int userId=this.getUserId()作实例变量保存.狂晕!
0 请登录后投票
   发表时间:2007-09-27  
服务器不可能出问题的,肯定是代码问题,将session作为实例变量了。
0 请登录后投票
   发表时间: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混乱了
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics