[Seasar-user:5077] PropertyInterTypeを使用した場合のテスト実行について
AGATA Toshitaka
[E-MAIL ADDRESS DELETED]
2006年 11月 13日 (月) 14:08:47 JST
縣です。
Seasar2.4.1をつかって開発を行っています。
PropertyInterTypeを使用してsetter,getterを生成しているコン
ポーネントの、
TestCase実行時にエラーが発生して、困っています。
どうもPropertyInterTypeで生成されたsetterでコンポー
ネントをセットする
タイミングでエラーが発生しているようです。
-----
Caused by: java.lang.RuntimeException: $class: internal error
at javassist.runtime.Desc.getClazz(Desc.java:55)
at jp.co.nulab.xxx.support.impl.ViewHelperFactoryImpl
$$EnhancedByS2AOP$$fd357f.setContainer(ViewHelperFactoryImpl$
$EnhancedByS2AOP$$fd357f.java)
-----
ちなみに同じ設定で同じコンポーネントを
Webコンテナ上で実行したときは、問題なく動作しています。
以下にソースと、dicon、スタックとレースを添付します。
こちらで把握している状況としては、
instanceDefの「SINGLETON」を「PROTOTYPE」にすると、
エラーはなくなりました。
似たような現象が発生した方、解決法をご存知の方がいらっしゃいまし
たら、
教えてください。
よろしくお願いします。
------------------------------------------------------------------------
----------------------------
■コンポーネント
public class ViewHelperImpl implements ViewHelper {
protected S2Container container;
...
}
------------------------------------------------------------------------
----------------------------
■dicon
<components namespace="support">
<include path="aop.dicon" />
<include path="alldao.dicon" />
<component
class="org.seasar.framework.container.autoregister.FileSystemComponentAu
toRegister">
<property name="instanceDef">
@[E-MAIL ADDRESS DELETED]
</property>
<property name="autoNaming">
<component
class="org.seasar.framework.container.autoregister.DefaultAutoNaming"/>
</property>
<initMethod name="addClassPattern">
<arg>"jp.co.nulab.xxx.support.impl"</arg>
<arg>".*Impl"</arg>
</initMethod>
</component>
<component
class="org.seasar.framework.container.autoregister.InterTypeAutoRegister
">
<property name="interType">aop.propertyInterType</property>
<initMethod name="addClassPattern">
<arg>"jp.co.nulab.xxx.support.impl"</arg>
<arg>".*Impl"</arg>
</initMethod>
</component>
</components>
------------------------------------------------------------------------
----------------------------
■スタックトレース
org.seasar.framework.beans.IllegalPropertyRuntimeException:
[ESSR0059]クラス
(jp.co.nulab.xxx.support.impl.ViewHelperFactoryImpl$$EnhancedByS2AOP$
$fd357f)のプロパティ(container)の設定に失敗しました。理由は
java.lang.RuntimeException: $class: internal error
at org.seasar.framework.beans.impl.PropertyDescImpl.setValue
(PropertyDescImpl.java:127)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.setValue
(AbstractBindingTypeDef.java:233)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.bindAuto
(AbstractBindingTypeDef.java:167)
at
org.seasar.framework.container.assembler.BindingTypeShouldDef.doBind
(BindingTypeShouldDef.java:53)
at
org.seasar.framework.container.assembler.AbstractBindingTypeDef.bind
(AbstractBindingTypeDef.java:73)
at
org.seasar.framework.container.assembler.AutoPropertyAssembler.assemble(
AutoPropertyAssembler.java:65)
at
org.seasar.framework.container.deployer.SingletonComponentDeployer.assem
ble(SingletonComponentDeployer.java:63)
at
org.seasar.framework.container.deployer.SingletonComponentDeployer.deplo
y(SingletonComponentDeployer.java:43)
at
org.seasar.framework.container.deployer.SingletonComponentDeployer.init(
SingletonComponentDeployer.java:71)
at org.seasar.framework.container.impl.ComponentDefImpl.init
(ComponentDefImpl.java:299)
at org.seasar.framework.container.impl.S2ContainerImpl.init
(S2ContainerImpl.java:488)
at org.seasar.framework.container.impl.S2ContainerImpl.init
(S2ContainerImpl.java:485)
at org.seasar.framework.container.impl.S2ContainerImpl.init
(S2ContainerImpl.java:485)
at org.seasar.framework.container.impl.S2ContainerImpl.init
(S2ContainerImpl.java:485)
at org.seasar.framework.container.impl.S2ContainerImpl.init
(S2ContainerImpl.java:485)
at org.seasar.framework.unit.S2FrameworkTestCase.runBare
(S2FrameworkTestCase.java:182)
at junit.framework.TestResult$1.protect(TestResult.java:110)
at junit.framework.TestResult.runProtected(TestResult.java:128)
at junit.framework.TestResult.run(TestResult.java:113)
at junit.framework.TestCase.run(TestCase.java:120)
at junit.framework.TestSuite.runTest(TestSuite.java:228)
at junit.framework.TestSuite.run(TestSuite.java:223)
at org.junit.internal.runners.OldTestClassRunner.run
(OldTestClassRunner.java:35)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run
(JUnit4TestReference.java:38)
at org.eclipse.jdt.internal.junit.runner.TestExecution.run
(TestExecution.java:38)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:460)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests
(RemoteTestRunner.java:673)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run
(RemoteTestRunner.java:386)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main
(RemoteTestRunner.java:196)
Caused by: java.lang.RuntimeException: $class: internal error
at javassist.runtime.Desc.getClazz(Desc.java:55)
at jp.co.nulab.xxx.support.impl.ViewHelperFactoryImpl$
$EnhancedByS2AOP$$fd357f.setContainer(ViewHelperFactoryImpl$
$EnhancedByS2AOP$$fd357f.java)
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.seasar.framework.util.MethodUtil.invoke(MethodUtil.java:49)
at org.seasar.framework.beans.impl.PropertyDescImpl.setValue
(PropertyDescImpl.java:124)
... 28 more
Seasar-user メーリングリストの案内