eFix (APAR): pq60281 Status: efix For Release: WebSphere 4.0.2 For Edition: WebSphere AE, AEs For ContainerTypes: AEServer, AEsServer CMVC defect: PQ60281 and previous Byte size of APAR: 1032657 bytes Date: 04/19/2002 Abstract: Cumulative EFixes for CM code Directions to apply efix: 1) Create temporary "efix" directory to store the zip/tar file: AIX: /tmp/WebSphere/efix Solaris/Linux: /tmp/WebSphere/efix Windows: c:\temp\WebSphere\efix 2) Copy zip/tar file to the directory (The zip/tar file will be created by WebSphere L2 Support. It will contain the the efix jar file, the readme.txt file, and any other standard information required by IBM) 3) Unzip/untar the file 4) Shutdown WebSphere 5) Run the jar file with the following command answering questions/prompts as they appear: java -jar 6) Restart WebSphere 7) The temp directory may be removed but the zip/tar 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 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. Trouble shooting -------------------------------------------------------------------------------------- o If an efix complains about the container type and you are sure it should match, contact WebSphere L2 Support for assistance with the -SkipContainerCheck option to the efix jar. Additional Information: ------------------------------------------------------------------ This Connection Pooling E-fix is cumulative WAS 4.02 AE All previous non-custom Connection Pooling E-fixes are included in this E-fix. ******************************** NOTE *********************************** Cached Prepared Statements performance (PQ53331 and 115405) in 4.02 base This code change features a performance increase to the WebSphere Connection prepared statement cache. The most benefit will be seen in the throughput of applications which use multiple connections simultaneously, although the performance for using a single connection is also improved. The side effect of this improvement is that the seamtics of "Prepared Statement cache size" has changed. In previous versions this value signified the total maximum number of Prepared Statements (PS) that would be cached in the datasource or Pool. In this E-Fix, the value still represents the number of PSs per datasource, but the number is now divided by the number of connections. If the number of PS is less than the numner of connections, a minimum of 1 per connection is allocated. For example given 100 PS, and 50 connections, you will have 2 per connection, and given 10 PS and 50 connections, you will have 1 per connection. Customers may wish to adjust the statement cache size. The default statement cache remains 100, and depending upon your connection pool size, this may be reasonable. For larger pool sizes, the statement cache size may need to be increased. Statement cache size can be set using the Connection Pooling tab of the datasource in the Admin Console. ************************************************************************* Included internal defects and APARS: 115626 - Connection manager message MSG_CONM_6015E has been improved. It now includes the class name of the class that was unable to be loaded. 116630 - Change to the datasource required properties for Informix. Username and password are now listed as required. 116723 - Improvements in the messages relating to loading the datasource class. 116978 - An internal testing improvement for Oracle. 117710 - A fix to allow the Test Connection button to support getting a test connection to a database without specifying a username or password on the datasource. Some databases, like DB2, support this. Other databases which require a username and password will still get an error. This fix also includes logic to catch only specifying one of either the username or password and not the other. This is considered incorrect. PQ56104 - Work around for Sybase JZ006 on setQueryTimeout. Sybase uses JZ006 as a generic error for both fatal and non- fatal errors. When WebSphere gets this error, we dumped the connection pool. Sybase, in EBF 10105 has added a submessage to the error msg, so, when non-fatal, we can differentiate between the fatal and non-fatal JZ006 errors, and only dump the connection pool for fatal errors. Sybase EBF 10105 is a prerequisite for this E-Fix, not using the EBF will result in WebSphere not correctly translating fatal JZ006 errors into StaleConnectionExceptions and will leave bad connections in the WebSphere connection pool. PQ56665 - A fix for a regression in error mapping support. The fix is an improvement to error mapping overall, and specifically fixes problems with error mapping Merant errors. PQ56737 - A fix for a condition in which the number of elements in the queue of waiting requests for a connection grows without bound. 117713 - DataSource class name not found during direct JNDI lookup The issue arises when a servlet looks up the DataSource directly, rather than using the resource reference mechanism. There is no way for SM to tell that the JDBC driver will be used by the servlet, so the jar/zip file is not put on the classpath. Solutions to this problem include using the J2EE resource reference mechanism to lookup the datasource or manually adding the jar/zip file to the classpath of the application server. The error message printed in this scenario will be changed to state that a probably cause of the problem is a direct JNDI lookup, and one of the two solutions above can be applied to solve the problem. PQ57523 - createTableForPersister method incorrectly converted the types DATE, TIME, and DOUBLE in some cases, or portions of other types and column names containing these values. The conversions are now done correctly as follows, DATE --> DATETIME TIME --> DATETIME DOUBLE --> FLOAT 110326 - Resourrce Analyzer would give negative numbers for Database Connection Pool % used. This has been fixed. 118508 - Fix synchronization in ConnectionPool to correct PMI counting. The ConnectionPool object incorrectly synchronizes creates and destroys of connections, causing incorrect data regarding the number of connection in the pool to be passed to PMI. 118886 - A synchronization/timing problem existed in the waiters queue. The fix eliminates erroneous ConnectionWaitTimeoutExceptions. 119364 - When using the AS/400 DB2 via the Toolbox or Native driver, they had changed the format of the URL. We made some changes so we can now \ parse the URL for both of these drivers properly. 121445 - Support is added in this e-fix for the WebSphere branded ConnectJDBC driver for MSSQLServer. The name of the new DataSource class is com.ibm.websphere.jdbcx.sqlserver.SQLServerDataSource This driver may be downloaded free of charge from IBM, for use with the WebSphere product. 122250 - A bug was introduced which precluded the choosing of DB2ConnectPortabilityLayer. PQ57073.2 - CM support for DB2/390 fix PQ58535 - USER NAME PROPERTY MISSING IN DRIVERMANAGER.GETCONNECTION This problem occurs with both Sybase and Informix. The issue was that in order to determine which portability layer to use (Sybase or Sybase11, Informix or Informix7) we must get a connection and check the meta data. To get this connection, we now pass a user id and password from the getConnection call in DataSourceImpl to the getPortabilityLayer call on SybasePortabilityLayer or PortabilityLayerImpl (Informix). 119963 - The DB password was in cleartext in XAResources file. This has been corrected. PQ60281 - When StaleConnectionException is recieved, there is a possibility of a NullPointerException from the close on CachedStatement. This has been fixed.