- PR -

HttpSessionBindingListenerについて

1
投稿者投稿内容
おす
会議室デビュー日: 2003/03/08
投稿数: 13
投稿日時: 2004-03-18 14:47
はじめまして、初めて投稿します。
おすです。

HttpSessionBindingListenerを実装したクラスのインスタンス(以下Aとする)を
セッションに格納し、セッションがタイムアウトしたときに、
Aの中から、セッションにアクセスしたいと思っているのですが
これは可能でしょうか?
HttpSessionBindingListener#valueUnBlundメソッドの引数である
HttpSessionBindingEventのgetSessionメソッドで
セッションが取れるとAPIドキュメントにあるのですが
セッションタイムアウトしているので取れないのでは?と思ったりもしています。

ご存知の方、ぜひご教授お願いします。


山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-03-18 15:25
Servlet仕様2.3 / 2.4 を確認してみましたが、どちらでも
「The valueUnbound method must be called after the object is no longer available via the getAttribute method of the HttpSession interface. 」
「Notifies the object that it is being unbound from a session and identifies the session. 」
と記述されています。getAttribute() メソッドより取得できなくなったタイミングなので、既にセッションが invalidate された後に呼ばれたのではタイミング的に遅すぎます。セッションがタイムアウトする際には先に valueUnbound 一通り呼ばれてからセッションが invalidate されると考えるのがリーズナブルですね。

実際 WebLogic で検証してみたところちゃんと取得できるみたいです。(WLS 8.1 SP2)

っていうか尋ねる前にまずお使いのコンテナで試してみてはいかがでしょうか?
おす
会議室デビュー日: 2003/03/08
投稿数: 13
投稿日時: 2004-03-18 15:49
おすです。

インギさん。
セッションは取れるとの回答、ありがとうございました。

この前提で設計をしていたのですが、不安になって調査もせずに投稿してしまいました。
期日が切迫しているのと、環境がないというのがありまして・・・。お許しください。
APサーバはtomcat4.1.27を使います。

1

スキルアップ/キャリアアップ(JOB@IT)