明示的にセションを終了する方法には、以下の2つがあります。
Apcoordinatorが管理するセション関連のデータをクリアする
サーブレット上のセションをすべて破棄する
Apcoordinatorが管理するセション関連のデータをクリアする
com.fujitsu.uji.http.HttpSessionProfileクラスのdisposeメソッドを呼び出すと、Apcoordinatorが管理するデータでセションに関連するもの (セションクラス、セションスコープのビジネスクラス、データBeanなど) は、リクエストの処理が完了した時点で全てクリアされます。ブラウザから次のリクエストを受信した場合は、新しくセションクラスのインスタンスが作成されます。サーブレットコンテナが管理するセションは存続します。
HttpSessionProfileクラスはWebアプリケーションのセションクラスです。
disposeメソッドを呼び出す処理の例
package sample;
import com.fujitsu.uji.http.HttpSessionProfile;
public void finalHandler(DispatchContext context, SomeBean dataBean) {
...
context.setResponseBean("body", dataBean);
HttpSessionProfile sp = (HttpSessionProfile)context.getSessionProfile();
sp.dispose();
}サーブレット上のセションをすべて破棄する
com.fujitsu.uji.http.HttpSessionProfileクラスのcloseSessionメソッドを呼び出すと、セションスコープに格納されているオブジェクトをリクエストスコープに格納し、javax.servlet.http.HttpSessionクラスのinvalidateメソッドを呼び出してサーブレットコンテナが管理するセションを破棄します。
closeSessionメソッドを呼び出す処理の例
package sample;
import com.fujitsu.uji.http.HttpSessionProfile;
import com.fujitsu.uji.SessionStateException;
public void finalHandler(DispatchContext context, SomeBean dataBean) {
...
context.setResponseBean("body", dataBean);
HttpSessionProfile sp = (HttpSessionProfile)context.getSessionProfile();
try {
sp.closeSession(context);
} catch (SessionStateException e) {
// closeSessionメソッドで発生した例外
...
}
}関連項目
APIリファレンスのHttpSessionProfileクラス