The jar file dbm.jar contains the fix for APAR PQ37818. APAR description: WAS does not remove bad connections from a connection pool To install this patch: 1. Copy dbm.jar to a directory, such as WebSphere\AppServer\efix 2. Add the directory/jar file to the beginning of the admin server's classpath in WebSphere\AppServer\bin\admin.config : com.ibm.ejs.sm.adminserver.classpath=C:/WebSphere/AppServer/efix/dbm.jar;C:/WebSphere.... 3. Restart the WebSphere Application Server. If you use Websphere/Appserver/bin/debug/adminserver.sh script then you need to place the jar file in front of the WAS_CP variable in that script. If you use Websphere/Appserver/bin/startupServer.sh, then you need to place it front of the classpath in both startupServer.sh and admin.config. Note: The following information needs to be used with this patch: The dbm.jar contains the fix for a bug that existed in the old Connection Manager(CM). Basically, the CM did not recognize stale connections present in the connection pool. If all the connections in the pool were stale then the only option would have been to restart the server to refresh the pool. The current fix does the following. It processes the SQLException received when a Connection.createStatement() or Statement.execute() is invoked and analyzes whether the SQLException was due to stale connection. It does this by looking at the SQLState, SQL error code etc. If it is determined that the connection is stale then we mark the connection accordingly. We then throw the SQLException back to the application. We expect the application to call Connection.close() -- which closes the connection and does not return the connection to the pool -- and retry the transaction again. Typically the application would like this. //pseudo code. try { boolean retry = true; while( retry) { try { Connection conn1 = ds1.getConnection(); Statement stmt1 = conn1.createStatement(); // assume that the connection becomes stale here somehow. // eg. force application all. // the following call will fail. ResultSet res = stmt1.executeQuery(stmtString); ....... // if all the database work was successful. retry = false; ............ } catch (SQLException ex) { conn1.close(); } } } catch( Exception ex) { } So, if there are n stale connections then after n retries the pool is empty and on the next retry we actually get a new connection from the database and begin replenishing the pool as needed. In the above example, if poolSize is 1, then the second attempt should succeed.