[Seasar-user:7606] Re: DBセッションレプリケーションのタイムアウトについて

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2007年 5月 11日 (金) 21:00:31 JST


小林 (koichik) です.

Date:    Fri, 11 May 2007 19:33:51 +0900
From:    "石田満" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:7602] DBセッションレプリケーションのタイムアウトについて

> Seasar + Teeda でDBを用いたセッションレプリケーションを利用しようと考えております。
> 
> セッションレプリケーションのタイムアウト時間はweb.xmlに設定されているタイムアウト時間と
> 同じになるのでしょうか?

今のところ,タイムアウトは実装されていないようです.
Web コンテナの中でタイムアウトしたセッションを削除する
スレッドを動かすより,タイムアウトしたセッションを
削除する SQL を cron 等で定期的に実行するなどした方が
簡単確実という気もします.

> あと、明示的にセッションクリアを行いたいのですが、方法はあるのでしょうか?

セッションに保持されている属性単位のクリアではなく,
セッション情報全体をクリアしたいということでしょうか?
HttpServletRequst を DI してもらったクラスで普通に
Servlet API を使って

HttpSession session = request.getSession(false);
if (session != null) {
  Enumeration names = session.getAttributeNames();
  while (names.hasMoreElements()) {
    String name = (String) names.nextElement();
    session.removeAttribute(name);
  }
}

な感じで消せるはずです.

SessionStateManager を DI してもらって removeState() を
呼び出す手もありますが,現時点の実装では Page クラス等から
呼び出すのはちょっと問題があるかも.
こちらはコミッタ内で確認します.


-- 
<component name="koichik">
    <property name="fullName">"Koichi Kobayashi"</property>
    <property name="email">"[E-MAIL ADDRESS DELETED]"</property>
    <property name="blog">"http://d.hatena.ne.jp/koichik"</property>
</component>




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