eFix (APAR): PQ65485 Status: efix Release: WebSphere 4.0.3 Supersedes eFixes: none CMVC defect: PQ65485 Byte size of APAR: 1,092,999 Date: 09/10/2002 Abstract: A JNDI API call involving a remote server will fail after the TRANSACTION_ROLLEDBACK exception is thrown Description/symptom of problem: A JNDI API call involving a remote naming server will fail after the TRANSACTION_ROLLEDBACK exception is thrown because such a naming API call was performed within the rolled-back transaction context unintentionally. Directions to apply efix: 1) Create temporary "efix" directory to store the jar file: AIX: /tmp/WebSphere/efix Solaris/Linux: /tmp/WebSphere/efix Windows: c:\temp\WebSphere\efix 2) Copy jar file to the directory 3) Shutdown WebSphere 4) Run the jar file with the following command answering questions/prompts as they appear: java -jar PQ65485_eFix.jar 5) Restart WebSphere 6) The temp directory may be removed but the jar file should be saved. Do not remove any files created and stored in the /WebSphere/AppServer/efix/ directories. These files are required if an efix is to be removed. Directions to remove an efix: NOTE: EFIXES MUST BE REMOVED IN THE ORDER THEY WERE APPLIED. DO NOT REMOVE AN EFIX UNLESS ALL EFIXES APPLIED AFTER IT HAVE FIRST BEEN REMOVED. YOU MAY REAPPLY ANY REMOVED EFIX. Example: If your system has efix1, efix2, and efix3 applied in that order and efix2 is to be removed, efix3 must be removed first, efix2 removed, and efix3 re-applied. 1) Change directory to the efix location (/WebSphere/AppServer/efix/). 2) Shutdown WebSphere 3) Run the backup jar file with the following command: java -jar PQ65485_eFix_backup.jar 4) Restart WebSphere Directions to re-apply an efix: Follow the instructions for applying an efix. If the backup files still exist (from the previous efix application), you will be prompted to overwrite. Answer "yes" at the overwrite prompts. Additional Information: ------------------------------------------------------------------ Misleading Transaction Error: "warning: Illegal use of 1 phase resource in transaction, 2 phase commit was attempted with 1 phase resource". The naming remote naming server call was forced to be part of the user transaction with the current naming implementation, which could result in the following failure scenarios: 1> A user defines a 1PC resource. After the transaction begins, he/she may get the following warning message on the console: "warning: Illegal use of 1 phase resource in transaction, 2 phase commit was attempted with 1 phase resource" if a JNDI call to Admin Server is made within the current transaction. 2> After a TRANSACTION_ROLLEDBACK exception was thrown, a JNDI call to AdminServererver will cause another TRANSACTION_ROLLEDBACK exception since the JNDI call was unintentionally performed in a rolled back transaction. The test bean calls a method on another bean to force a system exception NullPointerException). As part of its clean up, the application attempts an unbind on an object. From the stack trace, we see that WsnOptimizedNaming._NamingContextStub.unbind is called, which leads to a request through the ClientDelegate. Once we get into the jts code to make the request, it is determined that there is no data associated with the transaction due to the prior rollback. A new TRANSACTION_ROLLEDBACK exception is thrown, and the unbind call fails. The fix for this problem is to suspend the current transaction before a JNDI call to AdminServer and resume the transaction after the call is made.