ログアウト||セッションタイムアウト時に処理したい
どっかにオーバーライドする場所あるかねえとかWebSessionとかのソースたどり始めて、ふと思う。
これで動くんじゃね?
public class TestSession extends WebSession implements HttpSessionBindingListener { private static final long serialVersionUID = 1L; protected TestSession(Request request){ super(request); } @Override public void valueBound(HttpSessionBindingEvent event) { System.out.println("**** セッション生成 ****"); } @Override public void valueUnbound(HttpSessionBindingEvent event) { System.out.println("**** セッション破棄 ****"); } }
HttpSessionBindingListenerていうのは、あれです。セッションが生成/破棄されたとき通知してくれるやつ。
動きました。そりゃそうだセッションオブジェクトだもの。
追記:
これ注意が必要。具体的に言うと、セッションタイムアウトのタイミングだと、Session.getApplication()がExceptionを返します。
getApplication()はThreadLocalに格納されたアプリケーションオブジェクトを取得する仕組みだから、バックグラウンドプロセスからは自アプリケーションを取得できないんですね。どうしたものか。