[Seasar-user:15813] コンポーネント自動登録で意図しないClassも登録されてしまう

taka taka [E-MAIL ADDRESS DELETED]
2008年 9月 23日 (火) 21:48:49 JST


はじめまして takahiro と申します。

FileSystemComponentAutoRegister
を使用してコンポーネントの自動登録をしようと
addClassPattern に
  <arg>"com.taka.gwt.server.test"</arg>
  <arg>".*Test"</arg>
のように arg を与えたのですが
意図しないパッケージ(com.taka.gwt.server.dao)内の
".*Test" 以外のClassも登録しようとする動きになってしまいます。

自動登録を使用しないで個別にcomponent定義したときに
正常に動作することは確認しています。

初歩的な問題かもしれませんが
解決策等をご存知の方がいらっしゃいましたら、
教えていただければと思います。

s2-framework-2.4.29.jar
s2-extension-2.4.29.jar
s2-tiger-2.4.29.jar

app.dicon
******************************************************************************************************************
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE components PUBLIC "-//SEASAR//DTD S2Container 2.4//EN"
"http://www.seasar.org/dtd/components24.dtd">
<components>
<include path="convention.dicon"/>
<include path="aop.dicon"/>
<include path="s2jdbc.dicon"/>
<!--<component class="com.taka.gwt.server.test.S2JDBCDaoTest" />-->
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister"
>
   <initMethod name="addClassPattern">
<arg>"com.taka.gwt.server.test"</arg>
<arg>".*Test"</arg>
</initMethod>
</component>
</components>
******************************************************************************************************************


ログ
******************************************************************************************************************
DEBUG 2008-09-23 21:15:02,484 [main] S2Containerを作成します。path=cooldeploy.dicon
DEBUG 2008-09-23 21:15:02,593 [main]
S2Containerを作成しました。path=cooldeploy.dicon
DEBUG 2008-09-23 21:15:02,625 [main] S2Containerを作成します。path=app.dicon
DEBUG 2008-09-23 21:15:02,625 [main] S2Containerを作成します。path=convention.dicon
DEBUG 2008-09-23 21:15:02,687 [main]
S2Containerを作成しました。path=convention.dicon
DEBUG 2008-09-23 21:15:02,687 [main] S2Containerを作成します。path=aop.dicon
DEBUG 2008-09-23 21:15:02,750 [main] S2Containerを作成しました。path=aop.dicon
DEBUG 2008-09-23 21:15:02,750 [main] S2Containerを作成します。path=s2jdbc.dicon
DEBUG 2008-09-23 21:15:02,750 [main] S2Containerを作成します。path=jdbc.dicon
DEBUG 2008-09-23 21:15:02,765 [main] S2Containerを作成します。path=jta.dicon
DEBUG 2008-09-23 21:15:02,796 [main] S2Containerを作成しました。path=jta.dicon
DEBUG 2008-09-23 21:15:02,812 [main] S2Containerを作成しました。path=jdbc.dicon
DEBUG 2008-09-23 21:15:02,812 [main]
S2Containerを作成します。path=s2jdbc-internal.dicon
DEBUG 2008-09-23 21:15:02,843 [main]
S2Containerを作成しました。path=s2jdbc-internal.dicon
DEBUG 2008-09-23 21:15:02,890 [main] S2Containerを作成しました。path=s2jdbc.dicon
DEBUG 2008-09-23 21:15:02,890 [main] S2Containerを作成しました。path=app.dicon
DEBUG 2008-09-23 21:15:02,890 [main]
S2Containerを作成します。path=cooldeploy-autoregister.dicon
DEBUG 2008-09-23 21:15:02,906 [main] S2Containerを作成します。path=customizer.dicon
DEBUG 2008-09-23 21:15:02,906 [main]
S2Containerを作成します。path=default-customizer.dicon
DEBUG 2008-09-23 21:15:02,921 [main]
S2Containerを作成します。path=std-customizer.dicon
DEBUG 2008-09-23 21:15:02,921 [main]
S2Containerを作成します。path=std-customizer-tiger.dicon
DEBUG 2008-09-23 21:15:02,937 [main]
S2Containerを作成しました。path=std-customizer-tiger.dicon
DEBUG 2008-09-23 21:15:02,968 [main]
S2Containerを作成しました。path=std-customizer.dicon
DEBUG 2008-09-23 21:15:02,984 [main]
S2Containerを作成しました。path=default-customizer.dicon
DEBUG 2008-09-23 21:15:02,984 [main]
S2Containerを作成しました。path=customizer.dicon
DEBUG 2008-09-23 21:15:02,984 [main] S2Containerを作成します。path=creator.dicon
DEBUG 2008-09-23 21:15:03,015 [main] S2Containerを作成しました。path=creator.dicon
DEBUG 2008-09-23 21:15:03,015 [main]
S2Containerを作成しました。path=cooldeploy-autoregister.dicon
DEBUG 2008-09-23 21:15:03,234 [main]
クラス(com.taka.gwt.server.dao.ArticleDao[articleDao])のコンポーネント定義を登録します
DEBUG 2008-09-23 21:15:03,234 [main]
クラス(com.taka.gwt.server.dao.ArticleS2Dao[articleS2Dao])のコンポーネント定義を登録します
Exception in thread "main"
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス(org.seasar.framework.container.autoregister.FileSystemComponentAutoRegister)のプロパティ(customizer)の設定に失敗しました。理由はorg.seasar.framework.container.TooManyRegistrationRuntimeException:
[ESSR0045]interface
org.seasar.framework.container.ComponentCustomizerに複数のコンポーネント(org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain)が登録されています
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.getValue(AbstractBindingTypeDef.java:297)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindAuto(AbstractBindingTypeDef.java:217)
at
org.seasar.framework.container.assembler.BindingTypeMayDef.doBind(BindingTypeMayDef.java:49)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind(AbstractBindingTypeDef.java:78)
at
org.seasar.framework.container.assembler.AccessTypePropertyDef.bind(AccessTypePropertyDef.java:50)
at
org.seasar.framework.container.assembler.AccessTypePropertyDef.bind(AccessTypePropertyDef.java:41)
at
org.seasar.framework.container.assembler.AutoPropertyAssembler.assemble(AutoPropertyAssembler.java:56)
at
org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:68)
at
org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:48)
at
org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:76)
at
org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:236)
at
org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:563)
at
org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:150)
at com.taka.gwt.server.test.Main.main(Main.java:10)
Caused by:
org.seasar.framework.container.TooManyRegistrationRuntimeException:
[ESSR0045]interface
org.seasar.framework.container.ComponentCustomizerに複数のコンポーネント(org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain,
org.seasar.framework.container.customizer.CustomizerChain)が登録されています
at
org.seasar.framework.container.impl.TooManyRegistrationComponentDefImpl.getComponent(TooManyRegistrationComponentDefImpl.java:52)
at
org.seasar.framework.container.impl.S2ContainerImpl.getComponent(S2ContainerImpl.java:129)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.getValue(AbstractBindingTypeDef.java:295)
... 13 more
******************************************************************************************************************


以上、よろしくお願いします。
-------------- next part --------------
HTMLの添付ファイルを保管しました...
URL: <http://ml.seasar.org/archives/seasar-user/attachments/20080923/d5283df6/attachment-0001.html>


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