[Seasar-user:4612] ComponentAutoRegisterについて

Junichi Kato [E-MAIL ADDRESS DELETED]
2006年 9月 14日 (木) 13:21:54 JST


加藤です。

過去にもComponentAutoRegisterの話題が出ていましたが、ちょっと質問させて
ください。

プロジェクトがcommonとapplicationの2つある場合で、common側にcommon.dicon
を定義し、application側のapp.diconでcommon.diconをインクルードするように
しています。(Daoはcommon側のみに存在します)

この状態で、applicationをTomcatから起動すると、NoSuchConstructorRuntimeEx
ceptionが発生してしまうのですが、考えられる原因は何かありますでしょうか?
Daoはインターフェイスなので、ちょっとおかしな例外がでてしまっているのです
が、コンポーネントの登録順番が問題でしょうか?

よろしくお願いいたします。

-- common.dicon @ commmon project --

	<component 
		class="org.seasar.framework.container.autoregister.ComponentAutoRegister"
	>
		<property name="autoNaming">
	            <component
			class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
		</property>	
		<initMethod name="addReferenceClass">
			<arg>@[E-MAIL ADDRESS DELETED]</arg>
		</initMethod>
		<initMethod name="addClassPattern">
			<arg>"common.dao"</arg>
			<arg>".*Dao"</arg>
		</initMethod>
	</component>

	<component
		class="org.seasar.framework.container.autoregister.AspectAutoRegister"
	>
		<property name="interceptor">daoInterceptorChain</property>
		<initMethod name="addClassPattern">
			<arg>"common.dao"</arg>
			<arg>".*Dao"</arg>
		</initMethod>
	</component>

-- app.dicon @ application project-- (common projectのビルドパスは通っている前提)

	<include path="common.dicon"/>

-- 発生する例外 --

org.seasar.framework.exception.NoSuchConstructorRuntimeException: [ESSR0064]クラス(common.dao.hogeDao)のコンストラクタ(HogeDao())が見つかりません
	at org.seasar.framework.util.ClassUtil.getConstructor(ClassUtil.java:135)
	at org.seasar.framework.container.assembler.AbstractConstructorAssembler.assembleDefault(AbstractConstructorAssembler.java:89)
	at org.seasar.framework.container.assembler.AutoConstructorAssembler.doAssemble(AutoConstructorAssembler.java:40)
	at org.seasar.framework.container.assembler.AbstractConstructorAssembler.assemble(AbstractConstructorAssembler.java:50)
	at org.seasar.framework.container.deployer.SingletonComponentDeployer.assemble(SingletonComponentDeployer.java:67)
	at org.seasar.framework.container.deployer.SingletonComponentDeployer.deploy(SingletonComponentDeployer.java:51)
	at org.seasar.framework.container.deployer.SingletonComponentDeployer.init(SingletonComponentDeployer.java:97)
	at org.seasar.framework.container.impl.ComponentDefImpl.init(ComponentDefImpl.java:284)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:408)
	at org.seasar.framework.container.impl.S2ContainerImpl.init(S2ContainerImpl.java:405)
	at org.seasar.framework.container.factory.SingletonS2ContainerFactory.init(SingletonS2ContainerFactory.java:54)
	at org.seasar.framework.container.servlet.S2ContainerServlet.init(S2ContainerServlet.java:69)
	at javax.servlet.GenericServlet.init(GenericServlet.java:211)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:925)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:3880)
	at org.apache.catalina.core.StandardContext.start(StandardContext.java:4141)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
	at org.apache.catalina.core.StandardHost.start(StandardHost.java:718)
	at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1012)
	at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:442)
	at org.apache.catalina.core.StandardService.start(StandardService.java:450)
	at org.apache.catalina.core.StandardServer.start(StandardServer.java:680)
	at org.apache.catalina.startup.Catalina.start(Catalina.java:536)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:275)
	at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
Caused by: java.lang.NoSuchMethodException: jp.grandtech.pegasus.common.dao.BlogArchiveAccessDao.<init>()
	at java.lang.Class.getConstructor0(Class.java:2647)
	at java.lang.Class.getConstructor(Class.java:1629)
	at org.seasar.framework.util.ClassUtil.getConstructor(ClassUtil.java:133)
	... 29 more

-- 環境 --
S2.3.11
S2Dao 1.0.32
Tomcat 5.5.12
JDK1.5.0_06





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