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

石井 賢司 [E-MAIL ADDRESS DELETED]
2008年 5月 21日 (水) 14:52:51 JST


ひが様

ご回答ありがとうございます。

> セッションスコープのコンポーネントを扱う場合には、
> そのコンポーネントにアクセスするたびにlastAccessedTime
> は更新されます。

なるほど。

アプリ側では、その時点では、該当コンポーネントに
アクセスしているつもりは無かったのですが、
つまりは、そのコンポーネントをActionのフィールドにDIしてもらうだけで、
lastAccessedTimeは更新されてしまうのですね。

そうであれば、セッションタイムアウトは、
アプリの外側からs2sessionテーブルのデータを削除することで
実現するしかないですよね?

何か他に方法をご存知でしたら、
お手数ですがご教授頂ければと存じます。

よろしくお願いいたします。

石井



----- Original Message ----- 
From: "Yasuo Higa" <[E-MAIL ADDRESS DELETED]>
To: <[E-MAIL ADDRESS DELETED]>
Sent: Wednesday, May 21, 2008 2:07 PM
Subject: [Seasar-user:14336] Re: 【再】S2HttpSessionのlastAccessedTimeについて 



> ひがです。
>
>> 石井と申します。お世話になります。
>>
>> [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 mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-user
> 



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