[Seasar-user:17977] Re: コンテナの生成
Koichi Kobayashi
[E-MAIL ADDRESS DELETED]
2009年 7月 13日 (月) 18:00:33 JST
小林 (koichik) です.
Date: Mon, 13 Jul 2009 06:48:21 +0900
From: 渡辺茂昭 <[E-MAIL ADDRESS DELETED]>
To: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:17975] コンテナの生成
> アプリケーションの仕様上、サーブレットコンテキストが生成された時点
> (Servlet#init)で、新たにスレッドを立てて、そこでもコンテナを使用したいと
> 思っています。
> 生成したスレッド内でSingletonContainerを使用して処理を行ったところ、特
> 定の何箇所かで頻繁にLinkageErrorが発生します(もちろん、スレッドを立てな
> い時は発生しません)。
Servlet#init() で,作成したスレッドのコンテキスト
クラスローダに Web コンテナのコンテキストクラス
ローダを設定してみてください.
それが Web コンテナ的に合法かどうかは微妙ですが.
> 1.一般的にこのような使い方で問題がないのでしょうか?
個人的にはオススメしません.
S2 関連プロダクトでもそういうことをやってたり
するものがあるようなので,そうも言ってられない
気はしますが,個人的にはオススメしません.
EJB でスレッドの生成が禁止されているように,
Servlet でも禁止しておけばよかったのにと思ってます.
それよりは RMI や JMS などを使って外部の JVM に
処理をゆだねる方がいいと思います.
> 2.上記を回避するために、スレッド内で独自にコンテナを作成した場合、
> S2ContainerFactory#createのパス指定は、どのように与えたらいいのでしょう
> か?app.diconがコンテキスト内にあるため、単純にクラスパスからの絶対パス
> というわけには行かないと思うのですが...
独自スレッドで別途コンテナを作成することは
もっとオススメしません.
SingletonS2ContainerFactory に依存する部分が
動かなくなるためです.
--
<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 メーリングリストの案内