[Seasar-user:14336] Re: 【再】S2HttpSessionのlastAccessedTimeについて

Yasuo Higa [E-MAIL ADDRESS DELETED]
2008年 5月 21日 (水) 14:07:20 JST


ひがです。

> 石井と申します。お世話になります。
> 
> [Seasar-user:14241] S2HttpSessionのlastAccessedTimeについて
> 
> で質問させて頂いたものです。
> ご回答頂けなかったようですので、しつこいとは思いつつ
> お忙しい中、多くのご質問に埋もれてしまったのかも、とも思い、
> 再度質問させて頂く次第です。以下が質問内容になります。
> 
返事が遅くなり申し訳ありません。

> S2HttpSessionのlastAccessedTimeについて、
> 質問があります。
> 
> Seasar 2.4.25
> SAStruts 1.0.2-rc2
> を利用させて頂いております。
> 
> アプリケーションにて、
> セッションタイムアウトを検知しようと、
> HttpSession#getLastAccessedTime()を
> 実行したところ、どんなにリクエストの間隔をあけても、
> 数百ミリ秒前ぐらいの値が返ってきてしまいます。
> 
> そんなはずはないと思い調べた所、
> アプリケーションがHttpSession#getLastAccessedTime()を呼ぶより前に
> SessionComponentDeployerというオブジェクトが
> SessionスコープのコンポーネントをHttpSessionに復元(?)しようとする際、
> HttpSession#setAttribute()を呼んでいるため、
> S2HttpSession#setAttribute()では、lastAccessedTimeが
> そのタイミングで更新されてしまっているように見えます。
> 
セッションスコープのコンポーネントを扱う場合には、
そのコンポーネントにアクセスするたびにlastAccessedTime
は更新されます。

これは、セッションにオブジェクトを格納している以上
そうなるんじゃないかと思います。

よろしくお願いします。


Seasar-user メーリングリストの案内