[ https://issues.apache.org/jira/browse/GERONIMO-3444?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kevan Miller resolved GERONIMO-3444. ------------------------------------ Resolution: Fixed Fix Version/s: (was: 2.0.x) Looks like this was fixed. Could you close this jira, if you agree? > EJBContext > ---------- > > Key: GERONIMO-3444 > URL: https://issues.apache.org/jira/browse/GERONIMO-3444 > Project: Geronimo > Issue Type: Bug > Security Level: public(Regular issues) > Components: OpenEJB > Affects Versions: 2.0.x > Environment: Windows XP SP2 > Reporter: Aman Nanner > Fix For: 2.1 > > > During the initial running of our J2EE application, the following error > inconsistently occurs: > {panel:title="Stack Trace"} > 16:49:57,268 ERROR [OpenEJB] The bean instance null threw a system > exception:javax.naming.NameAlreadyBoundException: EJBContext > javax.naming.NameAlreadyBoundException: EJBContext > at > org.apache.xbean.naming.context.WritableContext.addBinding(WritableContext.java:91) > at > org.apache.xbean.naming.context.WritableContext$NestedWritableContext.addBinding(WritableContext.java:235) > at > org.apache.xbean.naming.context.AbstractContext.addBinding(AbstractContext.java:320) > at > org.apache.xbean.naming.context.AbstractContext.addDeepBinding(AbstractContext.java:240) > at > org.apache.xbean.naming.context.AbstractContext.bind(AbstractContext.java:652) > at > org.apache.xbean.naming.context.AbstractContext.bind(AbstractContext.java:643) > at > org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:111) > at > org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:156) > at > org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:211) > at > org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:65) > at > org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:320) > at > org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49) > at $Proxy164.executeUpdate(Unknown Source) > at > com.mxi.mx.common.ejb.job.StaleJobResetJobBean.processMessage(StaleJobResetJobBean.java:79) > at > com.mxi.mx.common.ejb.job.MxMessageDrivenBean.onMessage(MxMessageDrivenBean.java:135) > 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.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146) > at > org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129) > at > org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67) > at > org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:332) > at > org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:304) > at > org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:229) > at > org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:170) > at $Proxy163.onMessage(Unknown Source) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:121) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:61) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:696) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165) > at > org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290) > at > org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32) > at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:201) > at > org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:331) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > 16:49:57,284 ERROR [MxMessageDrivenBean] Error executing stale job reset job > javax.ejb.EJBException: Cannot obtain a free instance.; nested exception is: > javax.naming.NameAlreadyBoundException: EJBContext > at > org.apache.openejb.core.ivm.BaseEjbProxyHandler.convertException(BaseEjbProxyHandler.java:365) > at > org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:322) > at > org.apache.openejb.util.proxy.Jdk13InvocationHandler.invoke(Jdk13InvocationHandler.java:49) > at $Proxy164.executeUpdate(Unknown Source) > at > com.mxi.mx.common.ejb.job.StaleJobResetJobBean.processMessage(StaleJobResetJobBean.java:79) > at > com.mxi.mx.common.ejb.job.MxMessageDrivenBean.onMessage(MxMessageDrivenBean.java:135) > 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.apache.openejb.core.interceptor.ReflectionInvocationContext$Invocation.invoke(ReflectionInvocationContext.java:146) > at > org.apache.openejb.core.interceptor.ReflectionInvocationContext.proceed(ReflectionInvocationContext.java:129) > at > org.apache.openejb.core.interceptor.InterceptorStack.invoke(InterceptorStack.java:67) > at > org.apache.openejb.core.mdb.MdbContainer._invoke(MdbContainer.java:332) > at > org.apache.openejb.core.mdb.MdbContainer.invoke(MdbContainer.java:304) > at > org.apache.openejb.core.mdb.EndpointHandler.deliverMessage(EndpointHandler.java:229) > at > org.apache.openejb.core.mdb.EndpointHandler.invoke(EndpointHandler.java:170) > at $Proxy163.onMessage(Unknown Source) > at > org.apache.activemq.ra.MessageEndpointProxy$MessageEndpointAlive.onMessage(MessageEndpointProxy.java:121) > at > org.apache.activemq.ra.MessageEndpointProxy.onMessage(MessageEndpointProxy.java:61) > at org.apache.activemq.ActiveMQSession.run(ActiveMQSession.java:696) > at > org.apache.activemq.ra.ServerSessionImpl.run(ServerSessionImpl.java:165) > at > org.apache.geronimo.connector.work.WorkerContext.run(WorkerContext.java:290) > at > org.apache.geronimo.connector.work.pool.NamedRunnable.run(NamedRunnable.java:32) > at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:201) > at > org.apache.geronimo.pool.ThreadPool$ContextClassLoaderRunnable.run(ThreadPool.java:331) > at > java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675) > at java.lang.Thread.run(Thread.java:595) > Caused by: javax.naming.NameAlreadyBoundException: EJBContext > at > org.apache.xbean.naming.context.WritableContext.addBinding(WritableContext.java:91) > at > org.apache.xbean.naming.context.WritableContext$NestedWritableContext.addBinding(WritableContext.java:235) > at > org.apache.xbean.naming.context.AbstractContext.addBinding(AbstractContext.java:320) > at > org.apache.xbean.naming.context.AbstractContext.addDeepBinding(AbstractContext.java:240) > at > org.apache.xbean.naming.context.AbstractContext.bind(AbstractContext.java:652) > at > org.apache.xbean.naming.context.AbstractContext.bind(AbstractContext.java:643) > at > org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:111) > at > org.apache.openejb.core.stateless.StatelessContainer.invoke(StatelessContainer.java:156) > at > org.apache.openejb.core.ivm.EjbObjectProxyHandler.businessMethod(EjbObjectProxyHandler.java:211) > at > org.apache.openejb.core.ivm.EjbObjectProxyHandler._invoke(EjbObjectProxyHandler.java:65) > at > org.apache.openejb.core.ivm.BaseEjbProxyHandler.invoke(BaseEjbProxyHandler.java:320) > ... 27 more > {panel} > This error occurs only some of the time, which leads me to believe there is a > threading issue here. Specifically, looking at the following code fragment > in > {{org.apache.openejb.core.stateless.StatelessInstanceManager.getInstance(StatelessInstanceManager.java:111)}}: > {code} > Context ctx = deploymentInfo.getJndiEnc(); > SessionContext sessionContext; > try { > sessionContext = (SessionContext) > ctx.lookup("java:comp/EJBContext"); > } catch (NamingException e1) { > sessionContext = createSessionContext(); > // TODO: This should work > ctx.bind("java:comp/EJBContext", sessionContext); > } > {code} > It could be perhaps that the "java:/comp/EJBContext" is not initially found, > but another thread creates it by the time it is attempted to be bound in the > last line. Unfortunately, I do not have a reproducible test case at the > current time. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.