users@glassfish.java.net

Re: ConcurrentAccessException

From: Sahoo <Sahoo_at_sun.com>
Date: Wed, 04 Jun 2008 23:04:32 -0700

A stateful session bean must not be called when it is in the middle of a
conversation with a client. From the log, it appears that this rule was
violated. It can happen in situations not just limited to what is
described below:

1. a Java client shares the same bean reference across multiple threads.

2. a servlet was injected with a SFSB and is using that in the service()
method. Unless the servlet is using single-threaded model, it is likely
to get this exception. We actually detect this in most of the cases in
verifier and report a warning.

Thanks,
Sahoo

Markus Karg wrote:
>
> Today I found this in the log:
>
>
>
> [#|2008-06-04T08:55:14.863+0200|INFO|sun-appserver9.1|javax.enterprise.system.container.ejb|_ThreadID=54;_ThreadName=p:
> thread-pool-1; w: 144;|
>
> javax.ejb.EJBException: nested exception is:
> javax.ejb.ConcurrentAccessException: SessionBean is executing another
> request. [session-key: 90c00b00a81f-525aab53-4]
>
> javax.ejb.ConcurrentAccessException: SessionBean is executing another
> request. [session-key: 90c00b00a81f-525aab53-4]
>
> at
> com.sun.ejb.containers.StatefulSessionContainer.handleConcurrentInvocation(StatefulSessionContainer.java:2624)
>
> at
> com.sun.ejb.containers.StatefulSessionContainer._getContext(StatefulSessionContainer.java:2462)
>
> at
> com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:1675)
>
> at
> com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1229)
>
> at
> com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:202)
>
> at
> com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:120)
>
> at $Proxy2343.getDescription(Unknown Source)
>
> at
> sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
>
> at
> com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
>
> at
> com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
>
> at
> com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
>
> javax.ejb.EJBException: nested exception is:
> javax.ejb.ConcurrentAccessException: SessionBean is executing another
> request. [session-key: 90c00b00a81f-525aab53-4]
>
> at
> com.sun.ejb.containers.StatefulSessionContainer.handleConcurrentInvocation(StatefulSessionContainer.java:2638)
>
> at
> com.sun.ejb.containers.StatefulSessionContainer._getContext(StatefulSessionContainer.java:2462)
>
> at
> com.sun.ejb.containers.BaseContainer.getContext(BaseContainer.java:1675)
>
> at
> com.sun.ejb.containers.BaseContainer.preInvoke(BaseContainer.java:1229)
>
> at
> com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:202)
>
> at
> com.sun.ejb.containers.EJBObjectInvocationHandler.invoke(EJBObjectInvocationHandler.java:120)
>
> at $Proxy2343.getDescription(Unknown Source)
>
> at
> sun.reflect.GeneratedMethodAccessor311.invoke(Unknown Source)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
>
> at
> com.sun.corba.ee.impl.presentation.rmi.ReflectiveTie._invoke(ReflectiveTie.java:154)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatchToServant(CorbaServerRequestDispatcherImpl.java:687)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaServerRequestDispatcherImpl.dispatch(CorbaServerRequestDispatcherImpl.java:227)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequestRequest(CorbaMessageMediatorImpl.java:1846)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:1706)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleInput(CorbaMessageMediatorImpl.java:1088)
>
> at
> com.sun.corba.ee.impl.protocol.giopmsgheaders.RequestMessage_1_2.callback(RequestMessage_1_2.java:223)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.handleRequest(CorbaMessageMediatorImpl.java:806)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.dispatch(CorbaMessageMediatorImpl.java:563)
>
> at
> com.sun.corba.ee.impl.protocol.CorbaMessageMediatorImpl.doWork(CorbaMessageMediatorImpl.java:2567)
>
> at
> com.sun.corba.ee.impl.orbutil.threadpool.ThreadPoolImpl$WorkerThread.run(ThreadPoolImpl.java:555)
>
> |#]
>
>
>
> Can somebody explain to me, what that means and what my fault is?
>
>
>
> Thanks
>
> Markus
>
>
>
> QUIPSY QUALITY GmbH & Co. KG
>
> Ein Unternehmen der MES-Gruppe
>
> Stuttgarter Strasse 23
>
> D-75179 Pforzheim
>
> Tel: 07231-9189-52
>
> Fax: 07231-9189-59
>
> www.quipsy.de <http://www.quipsy.de>
>
> karg_at_quipsy.de <mailto:karg_at_quipsy.de>
>
> Registergericht Mannheim HRA 701214
>
> Geschäftsführer: Nils Schroeder
>
>
>
> Diese E-Mail enthält persönliche, vertrauliche und vor Weitergabe
> geschützte Informationen und ist ausschließlich für den vorgesehenen
> o.g. Empfänger (Adressaten) bestimmt. Falls Sie diese E-Mail
> versehentlich erhalten haben und nicht der vorgesehene Empfänger sind,
> bitten wir Sie, die E-Mail und deren Anhänge nicht aufzubewahren,
> nicht zu vervielfältigen, nicht zu nutzen und nicht weiterzugeben.
> Bitte informieren Sie uns als Absender über diesen Zustellungsfehler
> und löschen Sie die E-Mail.
>
>
>