PK08312: WLTC0037E: CANNOT START A GLOBAL TRANSACTION WHEN USING BMT IN AN MDB. | |||||||||||||||||||||||||||||||||||||||||||
![]() |
|||||||||||||||||||||||||||||||||||||||||||
![]() APAR status Closed as program error. Error description In WebSphere Application Server when attempted to start a Bean Managed Transaction in an MDB, the the server throws the following exception causing the app to fail. Trace: 2005/06/13 16:36:26.574 01 t=9A8088 c=UNK key=P8 (130072) FunctionName: com.ibm.ws.LocalTransaction.LTCUserTranCallback SourceId: com.ibm.ws.LocalTransaction.LTCUserTranCallback Category: ERROR ExtendedMessage: WLTC0037E: Cannot start a global transaction A LocalTransactionContainment is already active with work. Trace: 2005/06/13 16:36:26.574 01 t=9A8088 c=UNK key=P8 (0000A) Description: Log Boss/390 Error from filename: ./bborjtr.cpp at line: 861 error message: BBOO0220E WLTC0037E: Cannot start a global transaction. A LocalTransactionContainment is already active with work. com.ibm.ws.LocalTransaction.LTCUserTranCallback com.ibm.ws. LocalTransaction.LTCUserTranCallback Trace: 2005/06/13 16:36:26.576 01 t=9A8088 c=UNK key=P8 (1302) FunctionName: com.ibm.ws.LocalTransaction.LTCUserTranCallback SourceId: com.ibm.ws.LocalTransaction.LTCUserTranCallback Category: EVENT ExtendedMessage: contextChange caught exception; java.lang. IllegalStateException: Cannot start a global transaction. A LocalTransactionContainement is already active with work. at com.ibm.ws.LocalTransaction.LTCUserTranCallback.transaction at com.ibm.ws.LocalTransaction.LTCUserTranCallback.contextChan at com.ibm.ws390.tx.UserTransactionImpl.informCallbacks(UserTr at com.ibm.ws390.tx.UserTransactionImpl.begin(UserTransactionI at com.ibm.ejs.container.UserTransactionWrapper.begin(UserTran at com.dtcc.ive.ejb.SIMPInputMDBBean.onMessage(SIMPInputMDBBea at com.ibm.ejs.jms.listener.MDBWrapper$PriviledgedOnMessage.ru at com.ibm.ws.security.util.AccessController.doPrivileged(Acce at com.ibm.ejs.jms.listener.MDBWrapper.callOnMessage(MDBWrappe at com.ibm.ejs.jms.listener.MDBWrapper.onMessage(MDBWrapper.ja at com.ibm.ejs.jms.listener.WS390ServerSession.onMessage(WS390 at com.ibm.ejs.jms.listener.ServerSession.dispatch(ServerSessi at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcc at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAcc at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingM at java.lang.reflect.Method.invoke(Method.java(Compiled Code)) at com.ibm.ejs.jms.listener.ServerSessionDispatcher.dispatch(S at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java: at com.ibm.ejs.container.MDBWrapper.onMessage(MDBWrapper.java: at com.ibm.ejs.jms.listener.WS390ServerSession.runMR(WS390Serv at com.ibm.ejs.jms.listener.MDBCppUtilitiesInterfaceImpl.onMes at com.ibm.ws390.mdb.MDBCppUtilities.onMessageReference(MDBCppLocal fix Use Container Managed Transaction in an MDB.Problem summary **************************************************************** * USERS AFFECTED: All users of WebSphere Application Server * * V5.0 for z/OS * **************************************************************** * PROBLEM DESCRIPTION: BMT MDBs fail with message "WLTC0037E: * * Cannot start a global transaction" or * * "WLTC0018E: Cannot begin a * * LocalTransactionContainment. A * * LocalTransactionContainment is already * * active." when an application goes to * * begin a UserTransaction in its * * onMessage() method. * **************************************************************** * RECOMMENDATION: * **************************************************************** The problem occurs with Message-Driven Beans (MDBs) deployed with a value of "Bean" for the <transaction-type> deployment descriptor (i.e., Bean-Managed Tran or BMT). Currently the message handed to the MDBs onMessage() method is consumed under the same local transaction containment (LTC) that the EJB container establishes for the dispatch of the MDB onMessage() method. When the user begins a UserTransaction in the application's onMessage() method, the failure occurs because the LTC can not be completed until message consumption is committed, which (correctly) does not happen until after the application's onMessage() completes. This results in the WLTC0037E or WLTC0018E message.Problem conclusion Code was modified for the BMT case to create a second new LTC around message consumption. Now when the EJB container creates an LTC around the application's onMessage() it will create another LTC distinct from the one used to consume the message. This second LTC can be ended when the user begins a UserTransaction in the application's onMessage() method since the message consumption is no longer enlisted within it. APAR PK08312 is associated with SERVICE LEVEL W502033 of WebSphere Application Server V5.0 for z/OS.Temporary fix Comments
APAR is sysrouted FROM one or more of the following: PK08311 APAR is sysrouted TO one or more of the following: Modules/Macros
Publications Referenced
|
Document Information |
Current web document: swg1PK08312.html
Product categories: Software > Application Servers >
Distributed Application & Web Servers > WebSphere Application
Server for z/OS
Operating system(s):
Software version: 500
Software edition:
Reference #: PK08312
IBM Group: Software Group
Modified date: Sep 7, 2005
(C) Copyright IBM Corporation 2000, 2009. All Rights Reserved.