セッションが期限切れになる前に、 valueUnboundメソッドを使用してHttpSessionBindingListener
ロック(データベースからのエントリ)を解放しています:
@Override
public void valueUnbound(HttpSessionBindingEvent event) {
String user = (String) event.getSession().getAttribute("currentUsr");
removeLock(user);
}
ロックが設定されている場合、ユーザー名をセッション変数として設定しています。
removelockメソッドにこの「ユーザー名」が必要です。しかし、getAttributeは例外をスローしています:
java.lang.IllegalStateException:getAttribute:セッションはすでに無効になっています
セッション変数を取得するのに助けが必要ですか?または、ユーザー名を取得する他の方法はありますか?
いいえ、セッションが無効になっているためです。
解決策はわかりましたが、valueBoundメソッドのサーブレットコンテキストを介して属性を設定し、: event.getSession()。getServletContext()。getAttribute( "cUser");を介して属性を取得しています。
それはうまくいきます。ありがとうEJP
私はあなたのポイントEJPを手に入れました、あなたは正しいです、私はそれを複雑にしています、私はevent.getValue()からそれを得ることができます。あなたの答えに+1、ありがとう。