solman
Sep 17th, 2004, 05:11 PM
Please help me.
I am using Spring 1.1 and JDK 1.5rc and each time I attempt to use TransactionProxyFactoryBean I get stuck in a recursive loop inside of CGLIB. Below you can find the relevant portion of my context definition file and the log file. I am using cglib-full-2.0.2.jar.
I did not have this problem when I was using Spring 1.0 and JDK 1.4.2 in a similar (but not identical) set up. Turning off optimize did not help.
Thanks in advance for any help you can provide.
<bean id="extendableManagerImpl" class="com.bioarrayds.bioarraydb.logic.ExtendableManagerB ase">
<property name="extendableDAO"><ref local="extendableDAO"/></property>
<property name="nameValueTypeDAO"><ref local="nameValueTypeDAO"/></property>
</bean>
<bean id="extendableManager" class="org.springframework.transaction.interceptor.Transa ctionProxyFactoryBean">
<property name="transactionManager"><ref local="transactionManager"/></property>
<property name="target"><ref local="extendableManagerImpl"/></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name="proxyTargetClass"><value>true</value></property>
<property name="optimize"><value>false</value></property>
</bean>
2004-09-17 17:44:42,180 DEBUG org.springframework.beans.factory.support.DefaultL istableBeanFactory - Retrieving depending beans for bean 'permissionDAO'
2004-09-17 17:44:42,180 DEBUG org.springframework.beans.factory.support.DefaultL istableBeanFactory - Applying DestructionAwareBeanPostProcessors to bean with name 'permissionDAO'
2004-09-17 17:44:42,180 ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'extendableManager' defined in resource [/WEB-INF/application-context-generated.xml] of ServletContext: Initialization of bean failed; nested exception is java.lang.StackOverflowError: null
java.lang.StackOverflowError
at org.objectweb.asm.CodeAdapter.visitTableSwitchInsn (Unknown Source)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:605)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
I am using Spring 1.1 and JDK 1.5rc and each time I attempt to use TransactionProxyFactoryBean I get stuck in a recursive loop inside of CGLIB. Below you can find the relevant portion of my context definition file and the log file. I am using cglib-full-2.0.2.jar.
I did not have this problem when I was using Spring 1.0 and JDK 1.4.2 in a similar (but not identical) set up. Turning off optimize did not help.
Thanks in advance for any help you can provide.
<bean id="extendableManagerImpl" class="com.bioarrayds.bioarraydb.logic.ExtendableManagerB ase">
<property name="extendableDAO"><ref local="extendableDAO"/></property>
<property name="nameValueTypeDAO"><ref local="nameValueTypeDAO"/></property>
</bean>
<bean id="extendableManager" class="org.springframework.transaction.interceptor.Transa ctionProxyFactoryBean">
<property name="transactionManager"><ref local="transactionManager"/></property>
<property name="target"><ref local="extendableManagerImpl"/></property>
<property name="transactionAttributes">
<props>
<prop key="*">PROPAGATION_REQUIRED</prop>
</props>
</property>
<property name="proxyTargetClass"><value>true</value></property>
<property name="optimize"><value>false</value></property>
</bean>
2004-09-17 17:44:42,180 DEBUG org.springframework.beans.factory.support.DefaultL istableBeanFactory - Retrieving depending beans for bean 'permissionDAO'
2004-09-17 17:44:42,180 DEBUG org.springframework.beans.factory.support.DefaultL istableBeanFactory - Applying DestructionAwareBeanPostProcessors to bean with name 'permissionDAO'
2004-09-17 17:44:42,180 ERROR org.springframework.web.context.ContextLoader - Context initialization failed
org.springframework.beans.factory.BeanCreationExce ption: Error creating bean with name 'extendableManager' defined in resource [/WEB-INF/application-context-generated.xml] of ServletContext: Initialization of bean failed; nested exception is java.lang.StackOverflowError: null
java.lang.StackOverflowError
at org.objectweb.asm.CodeAdapter.visitTableSwitchInsn (Unknown Source)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:605)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)
at net.sf.cglib.core.EmitUtils.access$900(EmitUtils.j ava:24)
at net.sf.cglib.core.EmitUtils$16.processCase(EmitUti ls.java:812)
at net.sf.cglib.core.EmitUtils$6.processCase(EmitUtil s.java:293)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:610)
at net.sf.cglib.core.CodeEmitter.process_switch(CodeE mitter.java:583)
at net.sf.cglib.core.EmitUtils.string_switch_hash(Emi tUtils.java:268)
at net.sf.cglib.core.EmitUtils.string_switch(EmitUtil s.java:170)
at net.sf.cglib.core.EmitUtils.member_helper_type(Emi tUtils.java:810)