3

org.apache.wicket.protocol.http.WebSession; を拡張するセッションのクラスを使用しています。ログアウトまたはタイムアウトの結果としてこのセッションが期限切れになったときに呼び出されるメソッドが必要です。しかし、私は何も見つけていません。どうすればできますか?

4

2 に答える 2

7

次のように Wicket レベルで実行できます。

SessionStore 実装をオーバーライドすることにより - Application#newSessionStore() をオーバーライドします

 @Override
 protected ISessionStore newSessionStore() {
        return new SecondLevelCacheSessionStore(this, new DiskPageStore()) {

            @Override
            protected void onUnbind(String sessionId) {
                // this code is called when wicket call httpSession.invalidate()
            }

        };
    }

ただし、これには欠点があります。セッションが期限切れになると (サーブレット コンテナーによって制御されます)、このコードは呼び出されません。つまり、ウィケット自体によって引き起こされるセッション破棄イベントのみを処理できます。

グローバル レベルでは、サーブレット API のHttpSessionListenerを使用できます。トリガーされたセッション破棄イベントに反応できます。

HttpSesionListener#sessionDestroyed(HttpSessionEvent se)

これを WEB-INF/web.xml に書き込みます

<listener>
  <listener-class>
     your.listener.class.full.qualified.name
  </listener-class>
</listener>
于 2009-10-08T11:46:06.583 に答える
2

Session.java には、ユーザー セッションが無効になったとき、または HttpSession の有効期限が切れたときに実行されるコールバック メソッドがあります。

public void onInvalidate(){
}
于 2015-06-09T08:50:13.087 に答える