[Seasar-user:9531] Re: FileSystemComponentAutoRegister と ComponentAutoRegister

Nishioka Naoto [E-MAIL ADDRESS DELETED]
2007年 7月 30日 (月) 08:21:55 JST


にしおかです。

 ありがとうございます。

> もう少し詳細な情報をお願いします.
> 「あるところ」というのは,ComponentAutoRegister で
> 登録するコンポーネント群の一部なのか,それとも
> 複数定義している ComponentAutoRegister の一部の
> 定義でのコンポーネント群全部ということなのか,
> どちらでしょうか?

 ComponentAutoRegisterで登録しているところが2ヶ所あり、
 そのうちの1つの方は問題なくコンポーネントの取得ができております。
 もう1ヶ所の方は、登録しようとしたコンポーネント全てにおいて、
 登録できていない状態です。

> このキー (xxxxx) はクラスですか? それとも文字列ですか?
> 文字列だとしたら,クラスをキーに取得することは
> できますか?

 文字列です。クラスをキーに取得しようとしても、同様に
 ComponentNotFoundRuntimeException が発生しました。

> http://localhost:8080/xxx/teedaServlet?command=list
> とするとコンポーネント一覧を表示することができるので,
> こちらでコンポーネントが登録されているか,コンポーネント名は
> 意図したとおりになっているか確認してください.

 取得してみましたところ、以下のような結果が得られました。

【現象が発生しているところにおいてFileSystem〜で登録】
 意図したとおりの内容でリストに表示されます。
 独自に定義したAutoNamingで名前がつけられています。

【現象が発生しているところにおいてComponent〜で登録】
 ComponentAutoRegisterと、InterTypeAutoRegisterのみが
 表示されています。
 この2つに関しては、表示されている内容は
 FileSystem〜で登録した場合と同様の内容となっています。

【現象が発生していないところにおいてFileSystem〜で登録】
 意図したとおりの内容でリストに表示されます。

【現象が発生していないところにおいてComponent〜で登録】
 ComponentAutoRegisterと、AspectAutoRegisterのみが
 表示されています。

現象の発生の有無にかかわらず、Component〜で登録した場合は
各コンポーネントの内容が表示されないのですが、
そういう仕様なのでしょうか?

なお、それぞれのdiconファイルの記述内容です。
読み込まれる順番としては、
noProblemAutoRegister -> problemAutoRegister
となっています。FQDNNamingは、コンポーネントの登録名を
フルパッケージ名付きで作成するものとなっています。

以上、よろしくお願いいたします。

【diconfile1.dicon】
<component name="noProblemAutoRegister"
 class="org.seasar.framework.container.autoregister.ComponentAutoRegister">
  <initMethod name="addClassPattern">
    <arg>"some.package.noproblem"</arg>
    <arg>".*"</arg>
  </initMethod>
  <property name="instanceDef">@org.seasar.framework.container.deployer.Instan
[E-MAIL ADDRESS DELETED]</property>
  <property name="autoBindingDef">@org.seasar.framework.container.assembler.Au
[E-MAIL ADDRESS DELETED]</property>
</component>

【diconfile2.dicon】
<component name="problemAutoRegister"
 class="org.seasar.framework.container.autoregister.FileSystemComponentAutoReg
ister">
  <property name="autoNaming">
    <component class="some.package.FQDNNaming" />
  </property>
  <initMethod name="addClassPattern">
    <arg>"some.package.problem"</arg>
    <arg>".*"</arg>
  </initMethod>
  <property name="instanceDef">@org.seasar.framework.container.deployer.Instan
[E-MAIL ADDRESS DELETED]</property>
  <property name="autoBindingDef">@org.seasar.framework.container.assembler.Au
[E-MAIL ADDRESS DELETED]</property>
</component>

--------------------
Nishioka Naoto




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