模拟100个用户登录报错,请帮忙看看

zljxtt 2010-12-29 03:57:26
异常:
javax.servlet.ServletException: java.lang.IllegalStateException: getAttribute: Session already invalidated
org.apache.struts.action.RequestProcessor.processException(RequestProcessor.java:523)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:421)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.ccidit.crsmis.filter.LoginControlFilter.doFilter(LoginControlFilter.java:60)


root cause

java.lang.IllegalStateException: getAttribute: Session already invalidated
org.apache.catalina.session.StandardSession.getAttribute(StandardSession.java:1067)
org.apache.catalina.session.StandardSessionFacade.getAttribute(StandardSessionFacade.java:110)
com.ccidit.crsmis.usermanage.action.LoginAction.execute(LoginAction.java:99)
org.apache.struts.action.RequestProcessor.processActionPerform(RequestProcessor.java:419)
org.apache.struts.action.RequestProcessor.process(RequestProcessor.java:224)
org.apache.struts.action.ActionServlet.process(ActionServlet.java:1196)
org.apache.struts.action.ActionServlet.doPost(ActionServlet.java:432)
javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
com.ccidit.crsmis.filter.LoginControlFilter.doFilter(LoginControlFilter.java:60)


相应代码:
ServletContext application = request.getSession().getServletContext();
List sessioncache = (List)application.getAttribute("sessioncahce");
if (sessioncache!=null)
{
Iterator it = sessioncache.iterator();
while(it.hasNext())
{
HttpSession session = (HttpSession)it.next();
UserLoginData udata = (UserLoginData)session.getAttribute("UserLoginData");这行抛的异常
if (udata!=null)
{
System.out.println("session:--->"+udata.getStrLoginName());
if (strUserName.equals(udata.getStrLoginName())){
request.setAttribute("message", "该用户已登陆");
return mapping.findForward("warning");
}
}
}
}
我作了一个tomcatw集群,用loadrunner模拟了100用户登录,loadrunner运行完之后,我再正常登录,就抛出了异常

java.lang.IllegalStateException: getAttribute: Session already invalidated

...全文
151 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zljxtt 2010-12-29
  • 打赏
  • 举报
回复
session里边放的是已登录的用户信息,检查重复登录
thy_java 2010-12-29
  • 打赏
  • 举报
回复
application.getAttribute("sessioncahce");存了什么 有必要放到list里 在迭代出来吗
pengzhistar 2010-12-29
  • 打赏
  • 举报
回复
没仔细去看代码,感觉楼主对javaEE的内置对象有点模糊不清!
玉女 2010-12-29
  • 打赏
  • 举报
回复
UserLoginData udata = (UserLoginData)request.getSession().getAttribute("UserLoginData");
zljxtt 2010-12-29
  • 打赏
  • 举报
回复
我用了HttpSessionListener检查同一用户重复登录
public void sessionCreated(HttpSessionEvent arg0) {
// TODO Auto-generated method stub
ServletContext application = ((HttpSession)arg0.getSession()).getServletContext();
List sessioncache = (List)application.getAttribute("sessioncahce");
if (sessioncache == null){
sessioncache = new ArrayList();
application.setAttribute("sessioncahce", sessioncache);
}
sessioncache.add(arg0.getSession());
}
thy_java 2010-12-29
  • 打赏
  • 举报
回复
List sessioncache = (List)application.getAttribute("sessioncahce");//传过来的是个list吗
HttpSession session = (HttpSession)it.next();//接收它的怎么是个 httpSession
只是有这些疑问

UserLoginData udata = (UserLoginData)session.getAttribute("UserLoginData");这行抛的异常
改成 试验一下
UserLoginData udata = (UserLoginData)request.getSession().getAttribute("UserLoginData");
liuyuhua0066 2010-12-29
  • 打赏
  • 举报
回复
你把session invalidate掉了吧

81,090

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧