私はかなり奇妙な問題を経験しています。2 人のユーザーがまったく同時にログインしている場合、そのうちの 1 人が他のユーザーとして検出されます。
locale = new Locale(getLocale(request).getLanguage(), getLocale(request).getCountry());
strRemoteUser = WebTools.getUserIdWithoutDomainName(request.getRemoteUser()).toUpperCase();
logger.info("[MYAPP] User " + strRemoteUser + " is logging in");
logger.info("[MYAPP] Creating session for : " + strRemoteUser);
HttpSession session = request.getSession(false);
if (session != null) {
session.invalidate();
session = request.getSession();
}
logger.info("[MYAPP] User in session is : " + strRemoteUser);
私が得るものは次のとおりです。2 人のユーザー (USR001 と USR002) がまったく同時にアプリケーションにログインしているとします。それらは別の場所にあります。
ログ:
2013-05-14 08:19:38,550 INFO [com.myapp.action.common.LoginAction] [MYAPP] User USR001 is logging in
2013-05-14 08:19:38,551 INFO [com.myapp.action.common.LoginAction] [MYAPP] Creating session for : USR001
2013-05-14 08:19:38,760 INFO [com.myapp.action.common.LoginAction] [MYAPP] User USR002 is logging in
2013-05-14 08:19:38,761 INFO [com.myapp.action.common.LoginAction] [MYAPP] Creating session for : USR002
2013-05-14 08:19:38,834 INFO [com.myapp.action.common.LoginAction] [MYAPP] User in session is : USR002
2013-05-14 08:19:39,104 INFO [com.myapp.action.common.LoginAction] [MYAPP] User in session is : USR002
2013-05-14 08:19:39,425 INFO [com.myapp.action.common.LoginAction] [MYAPP] Auto Added User USR002
2013-05-14 08:19:39,550 INFO [com.myapp.action.common.LoginAction] [MYAPP] Setting user in session: USR002 (673)
ご覧のとおり、USR001 が USR002 として認識されるようになったため、USR002 が同時セッション作成を「勝ち取り」ます。USR001 がログアウトしてから再度ログインすると、正常に動作します。
何か考え/アドバイスはありますか?
助けてくれてどうもありがとう。
仕様:
- jBoss 4.2.3GA
- PostgreSQL 9.0.3
- ストラット 1.3.5
- EJB3