Begin forwarded message: > From: David Blevins <[email protected]> > Date: May 23, 2011 2:49:11 PM PDT > To: [email protected] > Subject: Re: java.lang.LinkageError > > > On May 13, 2011, at 3:17 AM, joe wrote: > >> The attached stacktrace is produced everytime the client invokes the >> call2Methods method after a server restart. All subsequent invocations seem >> to be ok. > > Hmm. I've seen that in Geronimo due to issues in the Karaf classloader, but > this is the first I've seen of the same bug in the VM classloader. > > In the situation of Karaf, simply "trying again" worked. We could probably > update the 'LocalBeanProxyGeneratorImpl.createProxy' method to catch the > LinkageError and simply try creating the proxy again. > > Will suggest this on the dev list and see if someone has some time to work on > it (I'm neck deep in CDI changes currently).
Anyone want to hack on this? We'd need it in trunk and 3.2. -David >> >> OpenEJB 3.1.4 >> Windows/Unix >> JDK 1.6.x >> >> >> Exception in thread "Thread-1" javax.ejb.EJBException: Cannot obtain a free >> instance.; nested exception is: >> java.lang.LinkageError: loader (instance of java/net/URLClassLoader): >> attempted duplicate class definition for name: >> "de/test/dc5/ejb/StartupServiceEJB$LocalBeanProxy" >> at >> org.apache.openejb.client.EJBInvocationHandler.convertException(EJBInvocationHandler.java:215) >> at >> org.apache.openejb.client.EJBObjectHandler._invoke(EJBObjectHandler.java:168) >> at >> org.apache.openejb.client.EJBInvocationHandler.invoke(EJBInvocationHandler.java:118) >> at >> org.apache.openejb.client.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:52) >> at $Proxy0.testMethod(Unknown Source) >> at de.test.dc.disp_exec.OpenEjbContainer$1.run(OpenEjbContainer.java:34) >> at java.lang.Thread.run(Unknown Source) >> Caused by: java.lang.LinkageError: loader (instance of >> java/net/URLClassLoader): attempted duplicate class definition for name: >> "de/test/dc5/ejb/StartupServiceEJB$LocalBeanProxy" >> at sun.misc.Unsafe.defineClass(Native Method) >> at >> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:68) >> at >> org.apache.openejb.util.proxy.LocalBeanProxyGeneratorImpl.createProxy(LocalBeanProxyGeneratorImpl.java:51) >> at >> org.apache.openejb.util.proxy.LocalBeanProxyFactory.newProxyInstance(LocalBeanProxyFactory.java:27) >> at >> org.apache.openejb.core.ivm.EjbHomeProxyHandler.createProxy(EjbHomeProxyHandler.java:139) >> at >> org.apache.openejb.core.ivm.EjbHomeProxyHandler.create(EjbHomeProxyHandler.java:286) >> at >> org.apache.openejb.core.ivm.EjbHomeProxyHandler._invoke(EjbHomeProxyHandler.java:169) >> at >> org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:282) >> at $Proxy60.create(Unknown Source) >> at >> org.apache.openejb.core.ivm.naming.openejb.BusinessLocalBeanReference.getObject(BusinessLocalBeanReference.java:34) >> at >> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:171) >> at >> org.apache.openejb.core.ivm.naming.IntraVmJndiReference.getObject(IntraVmJndiReference.java:38) >> at >> org.apache.openejb.core.ivm.naming.IvmContext.lookup(IvmContext.java:171) >> 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.core.stateless.StatelessInstanceManager.ceateInstance(StatelessInstanceManager.java:204) >> at >> org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:165) >> at >> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:165) >> at >> org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:136) >> at >> org.apache.openejb.server.ejbd.EjbRequestHandler.doEjbObject_BUSINESS_METHOD(EjbRequestHandler.java:238) >> at >> org.apache.openejb.server.ejbd.EjbRequestHandler.processRequest(EjbRequestHandler.java:129) >> at >> org.apache.openejb.server.ejbd.EjbDaemon.processEjbRequest(EjbDaemon.java:196) >> at org.apache.openejb.server.ejbd.EjbDaemon.service(EjbDaemon.java:149) >> at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:71) >> at >> org.apache.openejb.server.ejbd.KeepAliveServer$Session.service(KeepAliveServer.java:213) >> at >> org.apache.openejb.server.ejbd.KeepAliveServer.service(KeepAliveServer.java:233) >> at org.apache.openejb.server.ejbd.EjbServer.service(EjbServer.java:66) >> at org.apache.openejb.server.ServicePool$2.run(ServicePool.java:91) >> at org.apache.openejb.server.ServicePool$3.run(ServicePool.java:120) >> at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(Unknown >> Source) >> at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source) >> ... 1 more >> >> >
