You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomee.apache.org by zeddius <av...@gmail.com> on 2012/07/23 07:29:19 UTC
Attempted duplicate class definition in LocalBeanProxyGeneratorImpl
Hi,
It seems there is an issue when a stateless bean accessed from multiple
threads is trying to define a proxy class of a dependent bean multiple
times. See the below case:
@Singleton
@Startup
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class StartupBean {
@EJB
private AsyncBean asyncBean;
@PostConstruct
public void init() {
asyncBean.asyncHello();
asyncBean.asyncHello();
}
}
@Stateless
public class AsyncBean {
@EJB
private HelloBean helloBean;
@Asynchronous
public void asyncHello() {
helloBean.sayHello();
}
}
@Singleton
@ConcurrencyManagement(ConcurrencyManagementType.BEAN)
public class HelloBean {
public void sayHello() {
System.out.println("Hello");
}
}
Causes:
@Asynch invokation-test thread 0: class com.db.test.HelloBean
@Asynch invokation-test thread 0: com/db/test/HelloBean$LocalBeanProxy
@Asynch invokation-test thread 1: class com.db.test.HelloBean
@Asynch invokation-test thread 1: com/db/test/HelloBean$LocalBeanProxy
23.07.2012 9:14:25 org.apache.openejb.assembler.classic.Assembler
createApplication
INFO: Started Ejb(deployment-id=StartupBean, ejb-name=StartupBean,
container=My Singleton Container)
23.07.2012 9:14:25 org.apache.openejb.assembler.classic.Assembler
createApplication
INFO: Started Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=My
Singleton Container)
java.lang.reflect.InvocationTargetException
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:597)
at
org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:119)
at
org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:93)
at
org.apache.openejb.util.proxy.LocalBeanProxyFactory.newProxyInstance(LocalBeanProxyFactory.java:32)
at
org.apache.openejb.core.ivm.EjbHomeProxyHandler.createProxy(EjbHomeProxyHandler.java:138)
at
org.apache.openejb.core.ivm.EjbHomeProxyHandler.create(EjbHomeProxyHandler.java:289)
at
org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:174)
at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284)
at $Proxy54.create(Unknown Source)
at
org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference.getObject(BusinessLocalBeanReference.java:33)
at
org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
at
org.apache.openejb.core.ivm.naming.IntraVmJndiReference.getObject(IntraVmJndiReference.java:41)
23.07.2012 9:14:25 org.apache.openejb.assembler.classic.Assembler
createApplication
INFO: Deployed
Application(path=C:\Developer\apache-tomee-webprofile-1.0.0\wtpwebapps\invokation-test)
at
org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
at
org.apache.openejb.InjectionProcessor.fillInjectionProperties(InjectionProcessor.java:182)
at
org.apache.openejb.InjectionProcessor.construct(InjectionProcessor.java:110)
at
org.apache.openejb.InjectionProcessor.createInstance(InjectionProcessor.java:83)
at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1284)
at
org.apache.openejb.core.stateless.StatelessInstanceManager.ceateInstance(StatelessInstanceManager.java:188)
at
org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:181)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:173)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler$AsynchronousCall.call(EjbObjectProxyHandler.java:296)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.LinkageError: loader (instance of
org/apache/catalina/loader/WebappClassLoader): attempted duplicate class
definition for name: "com/db/test/HelloBean$LocalBeanProxy"
at sun.misc.Unsafe.defineClass(Native Method)
... 29 more
23.07.2012 9:14:25
org.apache.openejb.core.stateless.StatelessInstanceManager ceateInstance
SEVERE: The bean instance AsyncBean threw a system
exception:java.lang.InternalError:
java.lang.reflect.InvocationTargetException
java.lang.InternalError: java.lang.reflect.InvocationTargetException
at
org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:122)
at
org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:93)
at
org.apache.openejb.util.proxy.LocalBeanProxyFactory.newProxyInstance(LocalBeanProxyFactory.java:32)
at
org.apache.openejb.core.ivm.EjbHomeProxyHandler.createProxy(EjbHomeProxyHandler.java:138)
at
org.apache.openejb.core.ivm.EjbHomeProxyHandler.create(EjbHomeProxyHandler.java:289)
at
org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:174)
at
org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284)
at $Proxy54.create(Unknown Source)
at
org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference.getObject(BusinessLocalBeanReference.java:33)
at
org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
at
org.apache.openejb.core.ivm.naming.IntraVmJndiReference.getObject(IntraVmJndiReference.java:41)
at
org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
at
org.apache.openejb.InjectionProcessor.fillInjectionProperties(InjectionProcessor.java:182)
at
org.apache.openejb.InjectionProcessor.construct(InjectionProcessor.java:110)
at
org.apache.openejb.InjectionProcessor.createInstance(InjectionProcessor.java:83)
at org.apache.openejb.BeanContext.newInstance(BeanContext.java:1284)
at
org.apache.openejb.core.stateless.StatelessInstanceManager.ceateInstance(StatelessInstanceManager.java:188)
at
org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:181)
at
org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:173)
at
org.apache.openejb.core.ivm.EjbObjectProxyHandler$AsynchronousCall.call(EjbObjectProxyHandler.java:296)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at
java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
--
View this message in context: http://openejb.979440.n4.nabble.com/Attempted-duplicate-class-definition-in-LocalBeanProxyGeneratorImpl-tp4656496.html
Sent from the OpenEJB User mailing list archive at Nabble.com.
Re: Attempted duplicate class definition in LocalBeanProxyGeneratorImpl
Posted by Romain Manni-Bucau <rm...@gmail.com>.
Hi, should be fixee on trunk.
- Romain
Le 23 juil. 2012 07:29, "zeddius" <av...@gmail.com> a écrit :
> Hi,
>
> It seems there is an issue when a stateless bean accessed from multiple
> threads is trying to define a proxy class of a dependent bean multiple
> times. See the below case:
>
> @Singleton
> @Startup
> @ConcurrencyManagement(ConcurrencyManagementType.BEAN)
> public class StartupBean {
>
> @EJB
> private AsyncBean asyncBean;
>
> @PostConstruct
> public void init() {
> asyncBean.asyncHello();
> asyncBean.asyncHello();
> }
>
> }
>
> @Stateless
> public class AsyncBean {
>
> @EJB
> private HelloBean helloBean;
>
> @Asynchronous
> public void asyncHello() {
> helloBean.sayHello();
> }
>
> }
>
> @Singleton
> @ConcurrencyManagement(ConcurrencyManagementType.BEAN)
> public class HelloBean {
>
> public void sayHello() {
> System.out.println("Hello");
> }
>
> }
>
> Causes:
> @Asynch invokation-test thread 0: class com.db.test.HelloBean
> @Asynch invokation-test thread 0: com/db/test/HelloBean$LocalBeanProxy
> @Asynch invokation-test thread 1: class com.db.test.HelloBean
> @Asynch invokation-test thread 1: com/db/test/HelloBean$LocalBeanProxy
> 23.07.2012 9:14:25 org.apache.openejb.assembler.classic.Assembler
> createApplication
> INFO: Started Ejb(deployment-id=StartupBean, ejb-name=StartupBean,
> container=My Singleton Container)
> 23.07.2012 9:14:25 org.apache.openejb.assembler.classic.Assembler
> createApplication
> INFO: Started Ejb(deployment-id=HelloBean, ejb-name=HelloBean, container=My
> Singleton Container)
> java.lang.reflect.InvocationTargetException
> 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:597)
> at
>
> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:119)
> at
>
> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:93)
> at
>
> org.apache.openejb.util.proxy.LocalBeanProxyFactory.newProxyInstance(LocalBeanProxyFactory.java:32)
> at
>
> org.apache.openejb.core.ivm.EjbHomeProxyHandler.createProxy(EjbHomeProxyHandler.java:138)
> at
>
> org.apache.openejb.core.ivm.EjbHomeProxyHandler.create(EjbHomeProxyHandler.java:289)
> at
>
> org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:174)
> at
>
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284)
> at $Proxy54.create(Unknown Source)
> at
>
> org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference.getObject(BusinessLocalBeanReference.java:33)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
> at
>
> org.apache.openejb.core.ivm.naming.IntraVmJndiReference.getObject(IntraVmJndiReference.java:41)
> 23.07.2012 9:14:25 org.apache.openejb.assembler.classic.Assembler
> createApplication
> INFO: Deployed
>
> Application(path=C:\Developer\apache-tomee-webprofile-1.0.0\wtpwebapps\invokation-test)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
> at
>
> org.apache.openejb.InjectionProcessor.fillInjectionProperties(InjectionProcessor.java:182)
> at
>
> org.apache.openejb.InjectionProcessor.construct(InjectionProcessor.java:110)
> at
>
> org.apache.openejb.InjectionProcessor.createInstance(InjectionProcessor.java:83)
> at
> org.apache.openejb.BeanContext.newInstance(BeanContext.java:1284)
> at
>
> org.apache.openejb.core.stateless.StatelessInstanceManager.ceateInstance(StatelessInstanceManager.java:188)
> at
>
> org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:181)
> at
>
> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:173)
> at
>
> org.apache.openejb.core.ivm.EjbObjectProxyHandler$AsynchronousCall.call(EjbObjectProxyHandler.java:296)
> at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.LinkageError: loader (instance of
> org/apache/catalina/loader/WebappClassLoader): attempted duplicate class
> definition for name: "com/db/test/HelloBean$LocalBeanProxy"
> at sun.misc.Unsafe.defineClass(Native Method)
> ... 29 more
> 23.07.2012 9:14:25
> org.apache.openejb.core.stateless.StatelessInstanceManager ceateInstance
> SEVERE: The bean instance AsyncBean threw a system
> exception:java.lang.InternalError:
> java.lang.reflect.InvocationTargetException
> java.lang.InternalError: java.lang.reflect.InvocationTargetException
> at
>
> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:122)
> at
>
> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:93)
> at
>
> org.apache.openejb.util.proxy.LocalBeanProxyFactory.newProxyInstance(LocalBeanProxyFactory.java:32)
> at
>
> org.apache.openejb.core.ivm.EjbHomeProxyHandler.createProxy(EjbHomeProxyHandler.java:138)
> at
>
> org.apache.openejb.core.ivm.EjbHomeProxyHandler.create(EjbHomeProxyHandler.java:289)
> at
>
> org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:174)
> at
>
> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:284)
> at $Proxy54.create(Unknown Source)
> at
>
> org.apache.openejb.core.ivm.naming.BusinessLocalBeanReference.getObject(BusinessLocalBeanReference.java:33)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
> at
>
> org.apache.openejb.core.ivm.naming.IntraVmJndiReference.getObject(IntraVmJndiReference.java:41)
> at
> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:173)
> at
>
> org.apache.openejb.InjectionProcessor.fillInjectionProperties(InjectionProcessor.java:182)
> at
>
> org.apache.openejb.InjectionProcessor.construct(InjectionProcessor.java:110)
> at
>
> org.apache.openejb.InjectionProcessor.createInstance(InjectionProcessor.java:83)
> at
> org.apache.openejb.BeanContext.newInstance(BeanContext.java:1284)
> at
>
> org.apache.openejb.core.stateless.StatelessInstanceManager.ceateInstance(StatelessInstanceManager.java:188)
> at
>
> org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:181)
> at
>
> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:173)
> at
>
> org.apache.openejb.core.ivm.EjbObjectProxyHandler$AsynchronousCall.call(EjbObjectProxyHandler.java:296)
> at
> java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
> at java.util.concurrent.FutureTask.run(FutureTask.java:138)
> at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
> at
>
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
> at java.lang.Thread.run(Thread.java:662)
>
>
>
> --
> View this message in context:
> http://openejb.979440.n4.nabble.com/Attempted-duplicate-class-definition-in-LocalBeanProxyGeneratorImpl-tp4656496.html
> Sent from the OpenEJB User mailing list archive at Nabble.com.
>