ページの先頭行へ戻る
 Apcoordinatorユーザーズガイド

F.4.3 タイムアウト発生時点で特定の処理を実行したい

タイムアウト発生時点で特定の処理を実行したい場合は、ユーザ定義のセションクラスを作成して、sessionValueUnboundメソッドに記述します。

ユーザ定義のセションクラスの作成方法は、“F.4.1 セション管理の基本的な方法を知りたい”を参照してください。

import javax.servlet.http.HttpSessionBindingEvent;
import com.fujitsu.uji.http.HttpSessionProfile;

public class SampleSession extends HttpSessionProfile {
    public void sessionValueUnbound(HttpSessionBindingEvent event) {
        // セションが終了したときの処理を記述します。
        ....
    }
}

sessionValueUnboundの引数eventは、javax.servlet.http.HttpSessionBindingListenerインタフェースのvalueUnboundメソッドに渡されるものと同じです。eventのgetSessionメソッドで、終了するセションのjavax.servlet.http.HttpSessionオブジェクトが取得できます。

ポイント

HttpSessionProfileクラスはjavax.servlet.http.HttpSessionBindingListenerインタフェースを実装しており、そのvalueUnboundメソッドが呼び出されるとsessionValueUnboundを呼び出します。つまり、valueUnboundが呼び出されるのは、セションクラスがHttpSessionから切り離されたときです。以下の事象が発生したときにHttpSessionから切り離されます。

  • タイムアウトが発生したとき

  • HttpSessionProfileクラスのdisposeメソッドが呼び出されたとき

uji:saveSessionタグを使うと、セションクラスをHttpSessionに再登録するため、セションクラスのvalueUnboundが呼び出されます。ただし、この場合はsessionValueUnboundは呼び出されません。

関連項目