[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 メーリングリストの案内