[Seasar-user:20298] Re: [S2Container]マルチスレッド処理時にCyclicReferenceRuntimeException

Koichi Kobayashi [E-MAIL ADDRESS DELETED]
2010年 11月 1日 (月) 18:30:34 JST


小林 (koichik) です.

Date: Mon, 1 Nov 2010 18:00:34 +0900
From: [E-MAIL ADDRESS DELETED]
Subject: [Seasar-user:20297] [S2Container]マルチスレッド処理時にCyclicReferenceRuntimeException

> 上記問題への対応策等をご教授頂けますでしょうか?

マルチスレッドで動き出す前にコンテナの初期化を
行ってください。
コンテナの初期化を行った時点でシングルトンの
コンポーネントが初期化されるので、

>    1. スレッド1・スレッド2がほぼ同時に
> SingletonComponentDeployer#deploy()メソッドを呼び出す
>    2. 1.の時点でcomponentフィールドはnullのため、

という状況になりません。
コンテナの初期化は

SingletonS2ContainerFactory#init()

を呼び出すか、SingletonS2ContainerFactory を
使っていない場合は

S2Container#init()

を呼び出すことで行えます。


-- 
<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>
    <property name="twitter">"http://twitter.com/koichik"</property>
</component>



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