PQ70353: BEANNOTREENTRANTEXCEPTION IS THROWN INCORRECTLY IN WEBSPHERE APPLICATION SERVER 3.5.X

A fix is available
EJB Container; 4.0.2-4.0.7: Component Cumulative fix for EJB Container

APAR

APAR status
Closed as program error.

Error description
Under the circumstances described below, a BeanNotReentrant-
Exception may be incorrectly thrown by the EJB container in
WebSphere Application Server 3.5.x:
1. During a bean creation, the ejbCreate() is called in the user
provided bean implemenation. The ejbCreate throws an unchecked
exception (i.e. user defined security exception ),
2. A Bean's create method is always running in an Unsupported
transaction attribute, this means a local transaction is created
in the create() method called. This local transaction is
associated to the thread the create method is run in.
5. If the method call has a transaction attribute that requires
a new transaction (i.e. TX_Required), the local tx is suspended
and a new transaction is resumed. The enlistment of this new
transaction is prohibited because the bean has already been
enlisted in the original global transaction. Thus the
BeanNotReentrantException is thrown.
The solution of this problem is to disassociate the transaction
from the thread during the exception handling in the EJB
container and the exception goes away.
WebSphere Application Server 3.5.x:1. During a bean creation, the ejbCreate() is called in the userprovided bean implemenation. The ejbCreate throws an uncheckedexception (i.e. user defined security exception ),2. A Bean's create method is always running in an Unsupportedtransaction attribute, this means a local transaction is createdin the create() method called. This local transaction isassociated to the thread the create method is run in.5. If the method call has a transaction attribute that requiresa new transaction (i.e. TX_Required), the local tx is suspendedand a new transaction is resumed. The enlistment of this newtransaction is prohibited because the bean has already beenenlisted in the original global transaction. Thus theBeanNotReentrantException is thrown.The solution of this problem is to disassociate the transactionfrom the thread during the exception handling in the EJBcontainer and the exception goes away.
Local fix
Problem summary
****************************************************************
* USERS AFFECTED: WebSphere Application Server users of EJBs   *
*                 which throws an unchecked exception in the   *
*                 ejbCreate() method.                          *
****************************************************************
* PROBLEM DESCRIPTION: Under specific circumstances, a         *
*                      BeanNotReentrantException may be        *
*                      incorrectly thrown by the EJB           *
*                      container.                              *
****************************************************************
* RECOMMENDATION: Apply the efix provided to L2.               *
****************************************************************
Under the circumstances described below, a
BeanNotReentrantException may be incorrectly thrown by the EJB
container in WebSphere Application Server 3.5.x:
1. During a bean creation, the ejbCreate() is called in the
   user provided bean implementation. The ejbCreate throws an
   unchecked exception (i.e. user defined security exception),
2. A Bean's create method is always running in an Unsupported
   transaction attribute, this means a local transaction is
   created in the create() method call. This local transaction
   is associated to the thread the create method is run in.
3. If the method call has a transaction attribute that requires
   a new transaction (i.e. TX_Required), the local transaction
   is suspended and a new transaction is resumed. The enlistment
   of this new transaction is prohibited because the bean has
   already been enlisted in the original global transaction.
Thus the BeanNotReentrantException is thrown.
container in WebSphere Application Server 3.5.x:1. During a bean creation, the ejbCreate() is called in theuser provided bean implementation. The ejbCreate throws anunchecked exception (i.e. user defined security exception),2. A Bean's create method is always running in an Unsupportedtransaction attribute, this means a local transaction iscreated in the create() method call. This local transactionis associated to the thread the create method is run in.3. If the method call has a transaction attribute that requiresa new transaction (i.e. TX_Required), the local transactionis suspended and a new transaction is resumed. The enlistmentof this new transaction is prohibited because the bean hasalready been enlisted in the original global transaction.Thus the BeanNotReentrantException is thrown.
Problem conclusion
The solution of this problem is to disassociate the
transaction from the thread during the exception handling
in the EJB container.
Temporary fix
Customer confirmed the test fix works. We'll build the Fix
on to
p of the 3.5.6 fixpack for the customer to apply.
Comments
APAR information
APAR numberPQ70353
Reported component nameWAS ADVANCED AI
Reported component ID5648C8400
Reported release350
StatusCLOSED PER
PENoPE
HIPERNoHIPER
Submitted date2003-01-28
Closed date2003-03-24
Last modified date2003-05-05

APAR is sysrouted FROM one or more of the following:

APAR is sysrouted TO one or more of the following:APAR is sysrouted FROM one or more of the following:

PQ73847

Modules/Macros
Containr
APAR is sysrouted TO one or more of the following:PQ73847Modules/Macros

Fix information

Applicable component levels
R350 PSYUP











Document Information

Product categories: Software, Application Servers, Distributed Application & Web Servers, WebSphere Application Server, General
Software version: 350
Reference #: PQ70353
IBM Group: Software Group
Modified date: 2003-05-05