[Seasar-user:7538] Re: SMART deploy と app.dicon でのコンポーネントについて

o.h. [E-MAIL ADDRESS DELETED]
2007年 5月 8日 (火) 14:09:18 JST


長谷川です.

いろいろやっていますが、どうもちんぷんかんぷんです.
状況を整理したいと思います.

クラス階層は以下のようになっています

s2.dao
  COMTableDao
s2.dao.bean
  COMTableBean
s2.resource
  COMTableBundleSeed

ルートパッケージは s2 で、BundleSeed 用に独自 Creator を追加
しています.
COMTableBundleSeed は setDao(COMTableDao) を持ちます.

で、テスト側の構成ですが.

sample
  Foo
  FooTest (extends S2TestCase)

となっています.
Foo は setDao(COMTableDao) を持ちます.

この構成でテストを実行しています.
以下いろいろテストしてみた結果です.登録メッセージの回数も併記します

1.

COMTableBundleSeed : SMART depoloy
Foo : app.dicon

FooTest がわでの宣言
・Foo のみ -> OK
 (COMTableDao 4回登録)
・COMSTableBundleSeed のみ -> NG
 (COMTableDao 4回登録、COMSTableBundleSeed 1回登録)
・Foo + COMTableDao -> NG
 (COMTableDao 4回登録)

2.

COMTableBundleSeed : app.dicon
Foo : app.dicon

FooTest がわでの宣言
・Foo のみ -> OK
 (COMTableDao 8回登録)
・COMTableBundleSeed のみ -> OK
 (COMTableDao 8回登録)
・Foo + COMTableDao -> NG
 (COMTableDao 8回登録)
・COMTableBundleSeed + COMTableDao -> NG
 (COMTableDao 8回登録)

3.

COMTableBundleSeed : 登録なし
Foo : app.dicon

FooTest がわでの宣言
・Foo のみ -> OK
 (COMTableDao 4回登録)
・Foo + COMTableDao -> NG
 (COMTableDao 4回登録)

4.

COMTableBundleSeed : SMART deploy
Foo : 登録無し

FooTest がわでの宣言
・COMTableBundleSeed のみ -> OK
 (COMTableDao 1回登録、COMTableBundleSeed 1回登録)
・COMTableBundleSeed + COMTableDao -> OK
 (COMTableDao 1回登録、COMTableBundleSeed 1回登録)


どうも、app.dicon に書いた場合に Dao の登録メッセージが複数回出力
されるようです.また、その場合でも必ずしも例外になるわけではない
です.
SMART deploy と app.dicon での定義が交錯している場合に例外が発生
しているようにも見えます.


Koichi Kobayashi wrote:
>> [org.seasar.framework.container.util.S2ContainerUtil] - クラス
>> (test.s2.dao.SomeDao[SomeDao])のコンポーネント定義を登録します
> 
> と表示されるきっかけを作ったコンポーネントが
> 4 つあるはずです.
> それらの setter についても確認願います.
>

クラス自体は最初に記述したもの以外では、Dao 用の Bean が2クラス
ほど定義してあります.ただし Dao はまだ作成していません.
もちろん、これらのクラスの setter に Dao を引数とするものはありません.

> んー,自分が想像しているのと違う状況なのかも
> しれません.
> 念のため,本当に動いている S2 のバージョンを
> 確認いただけると幸いです.
> 

Eclipse 上からテストケースを動かしていますが、参照しているライブラリ
は前回記述したもので間違いありません.

> それから,デバッガ上でこの現象を再現することは
> 可能でしょうか?
> 

可能です.
#どこを調べるのかは見当がつきませんけど(^^;

以上.
-- 
_/_/
_/_/ mailto: [E-MAIL ADDRESS DELETED]
_/_/ (deprecated: [E-MAIL ADDRESS DELETED])
_/_/



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