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

Reply via email to