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
>> 
>> 
> 

Reply via email to