[Seasar-user:18641] Re: SessionLisenerから実行するスレッドからDAOが参照できない

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


小林 (koichik) です.

Date:    Wed, 14 Oct 2009 21:56:36 +0900
From:    "y.takaku" <[E-MAIL ADDRESS DELETED]>
To:      [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:18639] SessionLisenerから実行するスレッドからDAOが参照できない

> アプリケーション起動時にSessionListener上でインスタンスを作成し、スレッ
> ドを実行しています。このスレッドはアプリケーションの状態などを監視するた
> めのスレッドのようなものです。
> 
> そのスレッドからDBにアクセスしようとすると、NullPointerExceptionとなって
> しまいます。

SessionListener や独自のスレッド上では
Seasar2 が必要とする外部コンテキストを
設定してください.

通常の HTTP リクエストを処理するスレッド上で
あれば,Seasar2 の提供する Filter が外部
コンテキストを設定します.
具体的には以下のクラスを参照してください.

org.seasar.framework.container.filter.S2ContainerFilter

個人的には Web コンテナ内で独自のスレッドを
起動することや,SessionListener から S2 コンテナを
参照することはオススメしません.


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