明示的にセションを終了する方法には、以下の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クラス