2009-07-26 29 views
3

私はorg.apache.wicket.protocol.http.WebSessionを継承するセッション用のクラスを使用しています。 ログアウトまたはタイムアウトの結果としてこのセッションが終了したときに呼び出すメソッドが必要です。しかし私は何も見つけていない。どうすればいいですか?サーブレットによってconstroledされたセッションの有効期限が切れたとき(:オーバーライドアプリケーション#newSessionStore()Wicketセッションの有効期限

@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() 
      } 

     }; 
    } 

が、これは欠点を持っている - セッションストアの実装をオーバーライドして

+0

セッションの有効期限が切れたときに何をしなければならないかを教えてください。お手伝いをして、問題の解決策を見つけることができます。副次的な注意:PageExpiredExceptionをキャッチすることで、「何が必要なのか」を処理できますか? – Tim

答えて

7

あなたはこのようにWicketのレベルでそれを行うことができますコンテナ)、このコードは呼び出されません。言い換えれば - あなたはウィケットそのものに起因するセッション破棄イベントだけを扱うことができます。あなたはそれが

HttpSesionListener#sessionDestroyed(HttpSessionEvent se) 

によって引き起こされたものは何でもイベントを破壊し、あなたにこれを書き込みセッションで反応させることができるWEB-INF/web.xmlの

<listener> 
    <listener-class> 
    your.listener.class.full.qualified.name 
    </listener-class> 
</listener> 
- あなたはサーブレットAPIの HttpSessionListenerを使用することができますグローバルレベルでの

0

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

public void onInvalidate(){ 
} 
関連する問題