Fix (APAR): PK51366 Status: Fix Release: 5.1.1.16,5.1.1.15,5.1.1.14,5.1.1.13 Operating System: AIX,HP-UX,Linux,Solaris,Windows Supersedes Fixes: CMVC Defect: PK51366 Byte size of APAR: 37943 Date: 2007-08-22 Abstract: Incorrect ClassLoader on the thread of execution when transaction 'beforeCompletion' processing occurs on Enterprise Java Beans (EJB) enlisted in the transaction. Description/symptom of problem: PK51366 resolves the following problem: ERROR DESCRIPTION: The Fix modifies a class owned by the EJB Container which will ensure that the correct ClassLoader is on the thread when transaction 'beforeCompletion' processing takes place for each bean enlised in that transaction. LOCAL FIX: None. PROBLEM SUMMARY USERS AFFECTED: Users of IBM WebSphere Application Server versions 5.1.1, 6.0.2 and 6.1. PROBLEM DESCRIPTION: Incorrect ClassLoader on the thread of execution when transaction 'beforeCompletion' processing occurs on Enterprise Java Beans (EJB) enlisted in the transaction. RECOMMENDATION: None A situation may arise where an incorrect ClassLoader is used when a transaction 'beforeCompletion' processing is executed. During the 'beforeCompletion' processing, the EJB Container will execute 'beforeCompletion' on any beans as necessary. In certain scenarios (an example to follow), the ClassLoader on the thread when the bean was loaded/enlisted in the transaction may be different than the ClassLoader on the thread when the transaction commit processing executes. A scenario where this issue may arise is as follows: A client creates a transaction and then calls an EJB in a remote (different) JVM and where that EJB participates in the client's transaction. When the EJB is called, the EJB will execute under a certain ClassLoader. When the EJB call returns to the client and the client commits the transaction, notification of the transaction commit will be sent to the remote JVM for commit processing. Any EJBs enlisted with this transaction will also go through commit processing. Part of the commit processing consists of calling 'beforeCompletion' on EJBs as necessary. During this processing, the ClassLoader may be different than the ClassLoader initially used to load the EJB. PROBLEM CONCLUSION: With this fix, the EJB Container will ensure that when a transaction 'beforeCompletion' executes, the beans enlisted in that transaction will execute under the correct ClassLoader. The fix for this APAR is currently targeted for inclusion in fixpacks 5.1.1.17, 6.0.2.25 and 6.1.0.15. Please refer to the recommended updates page for delivery information: http://www.ibm.com/support/docview.wss?rs=180&uid=swg27004980 Directions to apply fix: NOTE: Choose the: 1) Release the fix applies to 2) The Editions that apply 3) Delete the Editions & Methods that do not apply and this Note Fix applies to Editions: Release: 5.0 5.1 ___ __X_ Application Server (Express or BASE) ___ Enterprise Edition (DD) ___ __X_ Network Deployment (ND) ___ ___ Edge Components ___ ___ Developers Edition ___ ___ Tools ___ WebSphere Business Integration Server Foundation (WBISF) Install Fix to: Method: __ Application Server Nodes __ Deployment Manager Nodes _X_ Both NOTE: The user must: * Have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * Be logged in with the same authority level when unpacking a fix, fix pack or refresh pack. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 The Update Installer for V5.0 does not have a maintenance directory. It uses fixpacks and fixes as the location of the unpacked files. 1) Copy PK51366.jar file directly to the maintenance directory 2) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that maintenance is being applied to. 3) Launch Update Installer 4) Enter the installation location of the WebSphere product you want to update. 5) Select the "Install maintenance package" operation. 6) Enter the file name of the maintenance package to install (PK51366.jar file which was copied in the maintenance directory). The V5.0 and V5.1 fix packs and fixes are unpacked as .jar files and should be unpacked into fixpacks or fixes directory. 7) Install the maintenance package. 8) Restart WebSphere Directions to remove fix: NOTE: * The user must have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * FIXES MUST BE REMOVED IN THE ORDER THEY WERE APPLIED * DO NOT REMOVE A FIX UNLESS ALL FIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED * YOU MAY REAPPLY ANY REMOVED FIX Example: If your system has fix1, fix2, and fix3 applied in that order and fix2 is to be removed, fix3 must be removed first, fix2 removed, and fix3 re-applied. 1) Shutdown WebSphere Manually execute setupCmdLine.bat in Windows or . ./setupCmdLine.sh in Unix from the WebSphere instance that uninstall is being run against. 2) Start Update Installer 3) Enter the installation location of the WebSphere product you want to remove the fix. 4) Select "Uninstall maintenance package" operation. 5) Enter the file name of the maintenance package to uninstall (PK51366.jar). 6) UnInstall maintenance package. 7) Restart WebSphere Directions to re-apply fix: 1) Shutdown WebSphere. 2) Follow the Fix instructions to apply the fix. 3) Restart WebSphere. Additional Information: