[Seasar-user:18335] [SAStruts] Tomcat起動時のDB接続について

Hiroshi Ogawa [E-MAIL ADDRESS DELETED]
2009年 8月 20日 (木) 00:58:14 JST


小川です。
お世話になります。

Seasar 2.4.39
SAStruts 1.0.4-sp6
Tomcat 6.0.20

Tomcat起動時にマスタテーブルからデータを取得し、
メモリ上にキャッシュする処理を実装することを考えています。

Tomcat起動時にコンテナが初期化され、シングルトンな
コンポーネントはその時点で初期化処理が走るとのことですので、
diconにシングルトンのコンポーネントを登録し、
そのコンポーネントでDB接続を行うために以下のように
Serviceを定義しました。

public class HogeSingleton {
    @Resource
    protected FooService fooService;
}

この設定でTomcatを起動すると、fooServiceをバインドできない旨の
エラーが発生しました。

diconに記述したコンポーネントはSMART deploy の対象にならない
ようですので、上の方法でServiceをDIで設定できたとしても、
非SMART deploy対象のコンポーネントからSMART deploy対象の
コンポーネント(Service)を参照することになり、そもそも非推奨な方法だと
認識しています。
http://ml.seasar.org/archives/seasar-user/2009-February/016916.html

ここで質問ですが、

・Tomcat起動時にDBアクセスをServiceを使って行うためには、
 どのような方法をとるべきでしょうか?それとも起動時にServiceを使うことは
 できないでしょうか?

・上記の設定でfooServiceがDIされない理由はどういったものでしょうか?
 app.diconから2つのdiconをインクルートした場合、一方からもう一方で
 定義されているコンポーネントをDIできない?ことと同じような理由でしょうか?
 (なんとなく違う気がします・・・)

よろしくお願いします。


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