Fix (APAR): PK16700 Status: Fix Release: 6.0.2.7 Operating System: AIX,HP-UX,i5/OS,Linux,Linux pSeries,Linux Red Hat - pSeries,Linux zSeries,OS/390,OS/400 Supersedes Fixes: CMVC Defect: xxxxxx Byte size of APAR: 85706 Date: 2006-05-04 Abstract: WebSphere Application Server allows for more than one instance of a Resource Adapter if the instances use different classloaders. Certain Resource Adapters may be intolerant of th Description/symptom of problem: PK16700 resolves the following problem: ERROR DESCRIPTION: For reasons of performance and high availability, WebSphere Application Server will start an instance of a given Resource Adapter to do recovery of in-doubt transactions in parallel with starting the normal runtime instance of the Resource Adapter. Some Resource Adapters may have conflicts between the RA instances because both instances try to use the same resource. For example, java.net.BindException could occur if both instances try to open the same Socket. LOCAL FIX: None PROBLEM SUMMARY USERS AFFECTED: WebSphere Application Server users who use JCA Resource Adapters other than the built-in Relational Resource Adapter PROBLEM DESCRIPTION: WebSphere Application Server allows for more than one instance of a Resource Adapter if the instances use different classloaders. Certain Resource Adapters may be intolerant of this, for example if each instance requires exclusive use of some resource. RECOMMENDATION: None The JCA 1.5 specification (sections 5.3.1 and 12.5.2) has an ambiguity regarding what it means to have only a single instance of a Resource Adapter Java Bean within a server JVM. Under one interpretation of the spec, one might assume that more than one instance is never allowed. Under the other interpretation, there are specific circumstances where more than one instance of a Resource Adapter is allowed. WebSphere's implementation does allow for more than one "equal" instance of a Resource Adapter (as determined by the Resource Adapter's equals() method) providing that the instances are in different classloaders. Some Resource Adapter implementations may interpret the specification to mean that this is not allowed. When this type of Resource Adapter runs in Websphere, it may fail under certain conditions. The manifestation of such a failure is very dependent on the Resource Adapter implementation supplied by the Resource Adapter provider. One common example observed is where a Resource Adapter instance requires exclusive use of a resource (for example, an inbound Adapter may need to exclusively listen on a particular port or an exception will be thrown when the second instance tries to listen on the port). For this example, the resource is XA capable and has suffered a server crash. Upon restarting the server, XA recovery, which happens concurrently, will create one instance of the Resource Adapter and the server will create another instance for use by applications. If the Resource Adapter cannot tolerate this condition an error will result. Other potential problems would be dependent on the Resource Adapter implementation. The Resource Adapter provider will be in the best position to know if this condition affects them. The WebSphere built-in Resource Adapters are not subject to problems with multiple instances. PROBLEM CONCLUSION: This fix provides an alternate Application Server JCA implementation which can be configured to work with the "multi-instance intolerant" interpretation of the JCA Spec. If you need this fix for a particular Resource Adapter, be aware that you will need to enable the fix on a per Resource Adapter basis. This alternate implementation will be slower when starting servers or performing recovery for the affected Resource Adapters. Do not enable this for Resource Adapters that don't need it. Certain existing configurations that currently work might not work if you enable this single instance behavior. For additional detail about the fix and about enabling the alternate behavior, please refer to the technote at http://www-1.ibm.com/support/docview.wss?&uid=swg21227594 The fix for this APAR is currently targeted for inclusion in fixpack 6.0.2.7. 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 6.0 __ Application Server (Express or BASE) __ Network Deployment (ND) __ WebSphere Business Integration Server Foundation (WBISF) __ Edge Components __ Developer __ Extended Deployment (XD) Install Fix to: Method: __ Application Server Nodes __ Deployment Manager Nodes __ Both NOTE: The user must: * Have Administrative rights in Windows, or be the Actual Root User in a UNIX environments. * Logged in with the same authority level when unpacking a fix, fix pack or refresh pack. * Be at V6.0.2.2 or newer of the Update Installer. This can be checked by reviewing the level of the Update Installer in file /updateinstaller/version.txt. The Update Installer can be downloaded from the following link: http://www.ibm.com/support/docview.wss?rs=180&uid=swg21205991 For detailed instructions to Extract the Update Installer see the following Technote: http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg21205400 1) Copy PKxxxxx.pak 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 (PKxxxxx.pak file which was copied in the maintenance 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 (PKxxxxx.pak). 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: