[Seasar-user:18597] Re: [SAStruts][S2JDBC]セッションタイムアウトとTomcat停止時にDBにアクセスする方法

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2009年 10月 7日 (水) 20:00:01 JST


小林 (koichik) です.

Date:    Wed, 07 Oct 2009 13:41:43 +0900
From:    山田 祐己 <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18590] [SAStruts][S2JDBC]セッションタイムアウトとTomcat停止時にDBにアクセスする方法

> 実際に行ないたい事は、セッションタイムアウトとTomcat停止時に
> レコードを削除するという事なのですが、Coldデプロイに切り替えても、
> 問題無い様に動作させるには、何か設定が必要でしょうか。

COOL deploy では,コンテナの初期化時に自動登録を
行い,コンポーネントを初期化します.
その際,SAStruts 関連のコンポーネントは
S2 コンテナから ServletContext を取得しますが,
SessionCheckListener ではコンテナの初期化時に
ServletContext を設定していないため,ぬるぽが
発生しています.

Web コンテナ上で S2 コンテナを初期化するために
必要なコードは以下のソースを参照してください.

org.seasar.framework.container.servlet.SingletonS2ContainerInitializer


対処法としては,SessionListener で必要な
コンポーネントだけを定義した dicon を使って
コンテナを初期化するか,Tomcat 停止時は
SessionListener でレコードを削除しないかの
いずれかになるかと.

自分なら後者にしますね.
どうせ Tomcat が停止している間にセッションが
タイムアウトするケースもあるでしょうから,
別途バッチでレコードを削除する必要があるはず.
であれば,Tomcat 上で頑張る価値はないです.


-- 
<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 メーリングリストの案内