首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 服务器 > 其他服务器 >

高手:session错误

2012-04-01 
求助高手:session异常我们的系统部署在websphere6.1上面,现出现一个奇怪的问题,有时候登陆后从过滤器中取

求助高手:session异常
我们的系统部署在websphere6.1上面,现出现一个奇怪的问题,有时候登陆后从过滤器中取出的session并不是登陆action里那个,我们的系统是struts1+hibernate
登陆action代码如下:
HttpSession session = req.getSession();
Log.debugLog.debug( "开始创建会话---->会话id为:"+session.getId()+"创建时间"+session.getCreationTime());
int waitTime = 12 * 60 * 60; // 12个小时
session.setMaxInactiveInterval(waitTime);
session.setAttribute("securityManager", securityManager);
String indexURL = "/index.jsp";
Log.debugLog.debug( "登陆完毕准备跳转---->"+indexURL);
return new ActionForward(indexURL, true);

过滤器doFilter()方法,检查代码如下
if (!verifyUser(request, response)) {
Log.debugLog.debug( "登陆失效:---->返回登陆页面");
response.sendRedirect(request.getContextPath() + signinPage);
return;
}

verifyUser方法验证:
boolean rtn = false;
try{
Log.debugLog.debug( "验证登陆会话---->会话id为:"+req.getSession().getId());
ISecurityManager security= (ISecurityManager) req.getSession().getAttribute("securityManager");
String loginId=security.getUserID();
rtn=true;
}catch(java.lang.NullPointerException ex){
Log.debugLog.debug("登陆验证失败了!securityManager为空!!"+ex.getMessage());
}catch(Exception ex){
Log.debugLog.debug("登陆验证失败了!"+ex.getMessage());
}
return rtn;

}

打印的日志为:
[WebContainer : 3] 2011-02-15 09:42:54,203 会话监听器---->创建会话:BM_r8V68a_XLq-NzwycPWgC
[WebContainer : 3] 2011-02-15 09:42:54,203 开始创建会话---->会话id为:BM_r8V68a_XLq-NzwycPWgC创建时间1297734174203
[WebContainer : 3] 2011-02-15 09:42:54,203 登陆完毕准备跳转---->/index.jsp
[WebContainer : 3] 2011-02-15 09:42:54,218 会话监听器---->创建会话:ysn-I39Q_jcuPEVvKKuA1cF
[WebContainer : 3] 2011-02-15 09:42:54,218 验证登陆会话---->会话id为:ysn-I39Q_jcuPEVvKKuA1cF
[WebContainer : 3] 2011-02-15 09:42:54,218 登陆验证失败了!securityManager为空!!null
[WebContainer : 3] 2011-02-15 09:42:54,218 登陆失效:---->返回登陆页面

从日志可以看出,在登陆的action里创建了会话BM_r8V68a_XLq-NzwycPWgC,并往里面存入了登陆对象securityManager,但是进入过滤器之后,调用req.getSession()获取到的却是另外一个会话ysn-I39Q_jcuPEVvKKuA1cF,当然就取不到securityManager导致登陆失败,但会话监听器又没监听到旧的那个会话被注销,不明白为什么会出现这样的问题,最郁闷的是并不是每次都出现,只是时不时的出现一下

求高人指点,qq306583867


[解决办法]
这个只能从websphere的集群着手,另外一个可能就是检查一下客户端的浏览器

热点排行