Проблемы: Иногда возникает ошибка IllegalStateException при помещении loginID и сеанса в ConcurrentHashMap.
Справочная информация: , чтобы избежать одновременного входа в систему, я сохраняю loginID с сеансом http как ConcurrentHashMap вконтекст сервлета.Каждый успешный вход в систему, чтобы проверить, существует ли loginID в ConcurrentHashMap в контексте сервлета.Если существует, аннулируйте предыдущий сеанс и сохраните текущий сеанс.
at com.ibm.ws.session.http.HttpSessionImpl.invalidate(HttpSessionImpl.java:302)
at com.ibm.ws.session.SessionData.invalidate(SessionData.java:247)
at com.ibm.ws.session.HttpSessionFacade.invalidate(HttpSessionFacade.java:200)
at xxx.xxx.xxx.xxx.LoginCommand.doPost(LoginCommand.java:184)
doPost(...) {
ServletContext application = session.getServletContext();
Map<String, Object> loginMap = (Map<String, Object>)application.getAttribute("loginMap");
if(loginMap == null) {
loginMap = new ConcurrentHashMap<String, Object>();
}
for(String loginID : loginMap.keySet()) {
if(loginID.equals(request.getParameter("user_id")) {
((HttpSession)loginMap.get(loginID)).invalidate();
break;
}
}
//LINE 184. Here sometimes throws IllegalStateException
loginMap.put(request.getParameter("user_id"), session);
application.setAttribute("loginMap", loginMap);
}