Apache Commons logo Commons DBCP

Apache Commons DBCP Release Notes

Release History

Version Date Description
2.7.0 2019-07-31 This is a minor release, including bug fixes and enhancements.
2.6.0 2019-02-14 This is a minor release, including bug fixes and enhancements.
2.5.0 2018-07-15 This is a minor release, including bug fixes and enhancements.
2.4.0 2018-06-12 This is a minor release, including bug fixes and enhancements.
2.3.0 2018-05-12 This is a minor release, including bug fixes and enhancements.
2.2.0 2017-12-27 This is a minor release, including bug fixes and enhancements.
2.1.1 6 Aug 2015 This is a patch release, including bug fixes only.
2.1 23 Feb 2015 This is minor release, including bug fixes and enhancements. Note that one of the enhancements (DBCP-423) is to implement AutoCloseable in BasicDataSource, PoolingDataSource and the InstanceKeyDataSource implementations.
2.0.1 24 May 2014 This is a bug fix release.
2.0 3 March 2014 This release includes new features as well as bug fixes and enhancements. Version 2.0.x supports JDBC 4.1, so requires Java 7. The Java package name has been changed from 'org.apache.commons.dbcp' to 'org.apache.commons.dbcp2'. Also the Maven groupId is now 'org.apache.commons' and the artifactId is 'commons-dbcp2' These changes are necessary because the API is not strictly binary compatible with the 1.x releases. To convert from the earlier releases, update the package name in imports, update the dependencies and recompile. There may be a few other changes to be made. Applications running under Java 7 should use DBCP 2.0.x. Java 6 users should use DBCP 1.4.x which supports JDBC 4. Java 1.4 and Java 5 users should use DBCP 1.3.x which supports JDBC 3.
1.5.1 not yet released TBD
1.4.1 not yet released TBD
1.4 2010-02-14 This release includes new features as well as bug fixes and enhancements. Some bug fixes change semantics (e.g. connection close is now idempotent). The 1.3 and 1.4 releases of DBCP are built from the same sources. Version 1.4 supports JDBC 4, so requires JDK 1.6. Applications running under JDK 1.4-1.5 must use DBCP 1.3. Applications running under JDK 1.6 should use DBCP 1.4. Other than support for the added methods in JDBC 4, there is nothing new or different in DBCP 1.4 vs. DBCP 1.3. The list of changes below since 1.2.2 applies to both the 1.3 and 1.4 release. Other than the one issue related to adding JDBC 4 support (DBCP-191), all bug fixes or new features are included in both DBCP 1.3 and 1.4
1.3 2010-02-14 Compatability release for JDBC 3. See version 1.4 description and change log.
1.2.2 2007-04-04 This is a maintenance release containing bug fixes and enhancements. All API changes are binary compatible with version 1.2.1.
1.2.1 2004-06-12 Maintenance Release to restore JDK 1.3 compatibility
1.2 2004-06-07  
1.1 2003-10-20  
1.0 2002-08-12 Initial Release

Release 2.7.0 – 2019-07-31

Type Changes By
Add ManagedDataSource#close() should declare used exceptions. Fixes DBCP-539. Thanks to Jacques Le Roux. jleroux
Add Add a ConnectionFactory class name setting for BasicDataSource.createConnectionFactory() #33. Fixes DBCP-547. Thanks to leechoongyon, Gary Gregory. ggregory
Add Add missing Javadocs. Thanks to Gary Gregory. ggregory
Fix Wrong JMX base name derived in BasicDataSource#updateJmxName. Fixes DBCP-538. Thanks to Ragnar Haugan, Gary Gregory. ggregory
Fix Avoid NPE when calling DriverAdapterCPDS.toString(). Fixes DBCP-546. Thanks to Sergey Chupov. ggregory
Fix java.util.IllegalFormatException while building a message for a SQLFeatureNotSupportedException in Jdbc41Bridge.getObject(ResultSet,String,Class). Fixes DBCP-550. Thanks to Gary Gregory. ggregory
Fix Fix Javadoc link in README.md #21. Thanks to LichKing-lee. ggregory
Update Close ObjectOutputStream before calling toByteArray() on underlying ByteArrayOutputStream #28. Fixes DBCP-540. Thanks to emopers. ggregory
Update Upgrade to JUnit Jupiter #19. Fixes DBCP-541. Thanks to Allon Murienik. ggregory
Update Fix tests on Java 11. Fixes DBCP-542. Thanks to Zheng Feng, Gary Gregory. ggregory
Update Update Apache Commons Pool from 2.6.1 to 2.6.2. Fixes DBCP-543. Thanks to Gary Gregory. ggregory
Update Add 'jmxName' property to web configuration parameters listing. Fixes DBCP-529. Thanks to Yuri. ggregory
Update Update Apache Commons Pool from 2.6.2 to 2.7.0. Fixes DBCP-548. Thanks to Gary Gregory. ggregory
Update Make org.apache.commons.dbcp2.AbandonedTrace.removeTrace(AbandonedTrace) null-safe. Fixes DBCP-549. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.DelegatingStatement.close() should try to close ALL of its result sets even when an exception occurs. Fixes DBCP-551. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.DelegatingConnection.passivate() should close ALL of its resources even when an exception occurs. Fixes DBCP-552. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.PoolablePreparedStatement.passivate() should close ALL of its resources even when an exception occurs. Fixes DBCP-553. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.PoolableCallableStatement.passivate() should close ALL of its resources even when an exception occurs. Fixes DBCP-554. Thanks to Gary Gregory. ggregory
Update Update tests from org.mockito:mockito-core 2.28.2 to 3.0.0. Thanks to Gary Gregory. ggregory
Update Update tests from H2 1.4.198 to 1.4.199. Thanks to Gary Gregory. ggregory
Update Update tests from com.h2database:h2 1.4.197 to 1.4.199. Thanks to Gary Gregory. ggregory
Update Update tests from org.jboss.narayana.jta:narayana-jta 5.9.2.Final to 5.9.5.Final. Thanks to Gary Gregory. ggregory
Update Update tests from org.jboss.logging:jboss-logging 3.3.2.Final to 3.4.0.Final. Thanks to Gary Gregory. ggregory
Update Update tests from org.mockito:mockito-core 2.24.0 to 2.28.2. Thanks to Gary Gregory. ggregory
Update Update tests from org.mockito:mockito-core 2.28.2 to 3.0.0. Thanks to Gary Gregory. ggregory

Release 2.6.0 – 2019-02-14

Type Changes By
Add Allow for manual connection eviction. Fixes DBCP-534. Thanks to Peter Wicks. chtompki
Add Allow DBCP to register with a TransactionSynchronizationRegistry for XA cases. Fixes DBCP-514. Thanks to Tom Jenkinson, Gary Gregory. ggregory
Update Make defensive copies of char[] passwords. Fixes DBCP-517. Thanks to Gary Gregory. ggregory
Update Do not try to register synchronization when the transaction is no longer active. Fixes DBCP-515. Thanks to Tom Jenkinson, Gary Gregory. ggregory
Update Do not double returnObject back to the pool if there is a transaction context with a shared connection. Fixes DBCP-516. Thanks to Tom Jenkinson, Gary Gregory. ggregory
Fix Allow DBCP to work with old Java 6/JDBC drivers without throwing AbstractMethodError. Fixes DBCP-518. Thanks to Gary Gregory. ggregory
Add Add some toString() methods for debugging (never printing passwords.). Fixes DBCP-519. Thanks to Gary Gregory. ggregory
Update BasicManagedDataSource needs to pass the TSR with creating DataSourceXAConnectionFactory. Fixes DBCP-520. Thanks to Zheng Feng. ggregory
Add Add getters to some classes. Fixes DBCP-527. Thanks to Gary Gregory. ggregory
Add org.apache.commons.dbcp2.DriverManagerConnectionFactory should use a char[] instead of a String to store passwords. Fixes DBCP-528. Thanks to Gary Gregory. ggregory
Update Update Apache Commons Pool from 2.6.0 to 2.6.1. Fixes DBCP-537. Thanks to Gary Gregory. ggregory

Release 2.5.0 – 2018-07-15

Type Changes By
Update Update Java requirement from version 7 to 8. Fixes DBCP-505. Thanks to Gary Gregory. ggregory
Add Support JDBC 4.2. Fixes DBCP-506. Thanks to Gary Gregory. ggregory
Add Support default schema in configuration. Fixes DBCP-479. Thanks to Guillaume Husta, Gary Gregory. ggregory
Update Examines 'SQLException's thrown by underlying connections or statements for fatal (disconnection) errors. Fixes DBCP-427. Thanks to Vladimir Konkov, Phil Steitz, Gary Gregory. ggregory
Update Change default for fail-fast connections from false to true. Fixes DBCP-507. Thanks to Vladimir Konkov, Phil Steitz, Gary Gregory. ggregory
Fix Prepared statement keys should take a Connection's schema into account. Fixes DBCP-508. Thanks to Gary Gregory. ggregory
Update Increase test coverage. Fixes DBCP-504. Thanks to Bruno P. Kinoshita. ggregory
Update Update Apache Commons Pool from 2.5.0 to 2.6.0. Fixes DBCP-510. Thanks to Gary Gregory. ggregory
Fix Avoid exceptions when closing a connection in mutli-threaded use case. Fixes DBCP-512. Thanks to Gary Gregory. ggregory

Release 2.4.0 – 2018-06-12

Type Changes By
Fix Connection leak during XATransaction in high load. Fixes DBCP-484. Thanks to Emanuel Freitas. ggregory
Update Drop Ant build. Fixes DBCP-492. Thanks to Gary Gregory. ggregory
Update Ensure DBCP ConnectionListener can deal with transaction managers which invoke rollback in a separate thread. Fixes DBCP-491. Thanks to Zheng Feng, Gary Gregory. ggregory
Update org.apache.commons.dbcp2.PStmtKey should make copies of given arrays in constructors. Fixes DBCP-494. Thanks to Gary Gregory. ggregory
Update Remove duplicate code in org.apache.commons.dbcp2.cpdsadapter.PStmtKeyCPDS. Fixes DBCP-495. Thanks to Gary Gregory. ggregory
Fix Add support for pooling CallableStatements to the org.apache.commons.dbcp2.cpdsadapter package. Fixes DBCP-496. Thanks to Gary Gregory. ggregory
Update Deprecate use of PStmtKeyCPDS in favor of PStmtKey. Fixes DBCP-497. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.DataSourceConnectionFactory should use a char[] instead of a String to store passwords. Fixes DBCP-498. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory should use a char[] instead of a String to store passwords. Fixes DBCP-499. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS should use a char[] instead of a String to store passwords. Fixes DBCP-500. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.datasources.CPDSConnectionFactory should use a char[] instead of a String to store passwords. Fixes DBCP-501. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.datasources internals should use a char[] instead of a String to store passwords. Fixes DBCP-502. Thanks to Gary Gregory. ggregory
Update org.apache.commons.dbcp2.datasources.InstanceKeyDataSourceFactory.closeAll() does not close all. Fixes DBCP-503. Thanks to Gary Gregory. ggregory

Release 2.3.0 – 2018-05-12

Type Changes By
Fix AbandonedTrace.getTrace() contains race condition. Fixes DBCP-476. Thanks to Gary Evesson, Richard Cordova. pschumacher
Fix Avoid javax.management.InstanceNotFoundException on shutdown when a bean is not registered. Closes #9. Fixes DBCP-482. Thanks to Dennis Lloyd, Gary Gregory. ggregory
Update Make constant public: org.apache.commons.dbcp2.PoolingDriver.URL_PREFIX. Fixes DBCP-483. Thanks to Gary Gregory. ggregory
Update DriverAdapterCPDS.setUser(), setPassword(), and getPooledConnection() with null arguments throw NullPointerExceptions when connection properties are set. Fixes DBCP-486. Thanks to Gary Gregory. ggregory
Update Add API org.apache.commons.dbcp2.datasources.PerUserPoolDataSource.clear(). Fixes DBCP-487. Thanks to Gary Gregory. ggregory
Update NPE for org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS.setConnectionProperties(null). Fixes DBCP-488. Thanks to Gary Gregory. ggregory
Update The method org.apache.commons.dbcp2.PoolingDriver.getConnectionPool(String) does not tell you which pool name is not registered when it throws an exception. Fixes DBCP-490. Thanks to Gary Gregory. ggregory

Release 2.2.0 – 2017-12-27

Type Changes By
Fix Update Apache Commons Pool from 2.4.2 to 2.5.0. Fixes DBCP-481. Thanks to Gary Gregory. ggregory
Fix OSGi declarations contain multiple import headers for javax.transaction. Fixes DBCP-454. Thanks to Philipp Marx, Matt Sicker. mattsicker
Fix Wrong parameter name in site documentation for BasicDataSource Configuration Parameters. Fixes DBCP-478. Thanks to nicola mele. ggregory
Fix Add jmxName to properties set by BasicDataSourceFactory. This enables container-managed pools created from JNDI Resource definitions to enable JMX by supplying a valid root JMX name. Fixes DBCP-452. psteitz
Fix NullPointerException thrown when calling ManagedConnection.isClosed(). Fixes DBCP-446. Thanks to Gary Gregory, feng yang, Euclides M, Phil Steitz. ggregory
Fix InvalidateConnection can result in closed connection returned by getConnection. Fixes DBCP-444. psteitz
Fix Complete the fix for DBCP-418, enabling PoolableConnection class to load in environments (such as GAE) where the JMX ManagementFactory is not available. Fixes DBCP-449. Thanks to Grzegorz D.. ggregory
Add Add constructor DriverManagerConnectionFactory(String). Fixes DBCP-451. ggregory
Fix Ensure that the cacheState setting is used when statement pooling is disabled. Fixes DBCP-455. Thanks to Kyohei Nakamura. markt
Fix Ensure that setSoftMinEvictableIdleTimeMillis is used when working with BasicDataSource. Fixes DBCP-453. Thanks to Philipp Marx. markt
Fix Correct the name of the configuration attribute softMinEvictableIdleTimeMillis. Fixes DBCP-456. Thanks to Kyohei Nakamura. markt
Fix Avoid potential infinite loops when checking if an SQLException is fatal for a connection or not. Fixes DBCP-472. markt
Fix Expand the fail-fast for fatal connection errors feature to include managed connections. Fixes DBCP-468. markt
Fix Correct a typo in the method name PoolableConnectionFactory#setMaxOpenPreparedStatements. The old method remains but is deprecated so not to break clients currently using the incorrect name. Fixes DBCP-463. markt
Add Refactoring to prepare for a future patch to enable pooling of all prepared and callable statements in PoolingConnection. Fixes DBCP-462. Thanks to Keiichi Fujino. markt
Fix Ensure that a thread's interrupt status is visible to the caller if the thread is interrupted during a call to PoolingDataSource.getConnection(). Fixes DBCP-459. markt
Add Make it simpler to extend BasicDataSource to allow sub-classes to provide custom GenericObjectPool implementations. Fixes DBCP-458. Thanks to Adrian Tarau. markt
Fix When using a BasicDataSource, pass changes related to the handling of abandoned connections to the underlying pool so that the pool configuration may be updated dynamically. Fixes DBCP-457. markt
Add Enable pooling of all prepared and callable statements inPoolingConnection. Fixes DBCP-474. Thanks to Keiichi Fujino. markt

Release 2.1.1 – 6 Aug 2015

Type Changes By
Update Updated pool version to 2.4.2. The fix for POOL-300 may cause DBCP users to see more reports of abandoned connections (if removal and logging are configured). Prior to the fix for POOL-300, the PrintWriter used to log abandoned connection stack traces was not being flushed on each log event. psteitz
Fix Added BasicDataSource abandonedUsageTracking property missing from BasicDataSourceFactory. Fixes DBCP-441. psteitz
Fix SharedPoolDataSource getConnection fails when testOnBorrow is set with a null validation query. Fixes DBCP-442. psteitz
Fix Nested connections in a transaction (local) throws null pointer. Fixes DBCP-438. Thanks to Raihan Kibria. psteitz
Fix BasicDataSource does not set disconnectionSql properties on its PoolableConnectionFactory. Fixes DBCP-437. psteitz

Release 2.1 – 23 Feb 2015

Type Changes By
Fix InstanceKeyDataSource discards native SQLException when given password does not match password used to create the connection. Fixes DBCP-420. sebb
Update Update Apache Commons Logging to 1.2 from 1.1.3. Fixes DBCP-422. ggregory
Fix Correct some Javadoc references to Apache Commons Pool 2 classes that have changed names since Pool 1.x. markt
Fix Do not ignore the configured custom eviction policy when creating a BasicDataSource. markt
Add Added invalidateConnection method to BasicDataSource. Fixes DBCP-426. Thanks to Kasper Sørensen. psteitz
Fix Unsuccessful Connection enlistment in XA Transaction ignored by TransactionContext. Fixes DBCP-428. Thanks to Vladimir Konkov. psteitz
Update Made expired connection logging configurable in BasicDataSource. Setting logExpiredConnections to false suppresses expired connection log messages. Fixes DBCP-424. psteitz
Update Made Datasources implement AutoCloseable. Fixes DBCP-423. psteitz
Add Added fastFailValidation property to PoolableConnection, configurable in BasicDataSource. When set to true, connections that have previously thrown fatal disconnection errors will fail validation immediately (no driver calls). Fixes DBCP-427. Thanks to Vladimir Konkov. psteitz
Fix Changed BasicDataSource createDataSource method to ensure that initialization completes before clients get reference to newly created instances. Fixes DBCP-432. psteitz
Fix Fixed connection leak when SQLException is thrown while enlisting an XA transaction. Fixes DBCP-433. Thanks to Vladimir Konkov. psteitz
Fix Setting jmxName to null should suppress JMX registration of connection and statement pools. Fixes DBCP-434. psteitz
Update Eliminated synchronization in BasicDataSource getNumActive, getNumIdle methods. psteitz
Update Added property name verification to BasicDataSourceFactory. References including obsolete or unrecognized properties now generate log messages. Fixes DBCP-435. Thanks to Denixx Baykin.

Release 2.0.1 – 24 May 2014

Type Changes By
Fix Small performance improvements when returning connections to the pool. markt
Fix Fixed DelegatingStatement close to ensure closed statements do not retain references to pooled prepared statements. Due to finalization code added in 2.0, this was causing pooled prepared statements to be closed by GC while in use by clients. Fixes DBCP-414. Thanks to Pasi Eronen. markt
Update Added check in PoolingDataSource constructor to ensure that the connection factory and pool are properly linked. Fixes DBCP-412. psteitz
Fix Fixed connection leak when managed connections are closed during transactions. Fixes DBCP-417. psteitz
Fix Enable PoolableConnection class to load without JMX. Fixes DBCP-418. psteitz

Release 2.0 – 3 March 2014

Type Changes By
Fix BasicManagedDataSource - unregister from JMX on close(). Fixes DBCP-411. sebb
Fix Log validation failures of poolable connections. Fixes DBCP-154. markt
Fix DelegatingStatement.close() fails with NPE if statement is null. Fixes DBCP-403. sebb
Fix CPDSConnectionFactory.validateObject(Object) ignores Throwable. Fixes DBCP-322. sebb
Add Provide a new option (cacheState) to cache current values of autoCommit and readOnly so database queries are not required for every call to the associated getters. This option is enabled by default. markt
Fix Removed unnecessary synchronisation in BasicDataSource#createDataSource. Fixes DBCP-300. markt
Update The Java package name has been changed from org.apache.commons.dbcp to org.apache.commons.dbcp2. markt
Update Update to Commons Pool 2 (based on java.util.concurrent) to provide pooling functionality. markt
Update Updated source code for Java 1.6 (added @Override & @Deprecated annotations). markt
Update Removed JOCL support. markt
Update Remove deprecated SQLNestedException. Fixes DBCP-143. markt
Fix Fix threading issues with accessToUnderlyingConnectionAllowed attribute of PoolingDriver which is used to support unit testing. Fixes DBCP-384. markt
Add BasicDataSource instances are now exposed via JMX. All the configuration properties are available as is the connection pool and the statement pools (if statement pooling is enabled). Fixes DBCP-292. markt
Fix Fix thread safety issues in the SharedPoolDataSource and the PerUserPoolDataSource. Fixes DBCP-376. Thanks to Dave Oxley. markt
Fix Allow accessToUnderlyingConnectionAllowed to be configured when configuration takes place via JNDI in a JavaEE container. Fixes DBCP-382. Thanks to Stefan Rempfer. markt
Fix Fix threading issue when using multiple instances of the SharedPoolDataSource concurrently. Fixes DBCP-369. Thanks to Michael Pradel. markt
Fix Ensure that the close state of a pooled connection and the underlying connection is consistent when the underlying connection is closed as a result of an error condition. Fixes DBCP-391. markt
Fix Make all mutable fields private. Fixes DBCP-404. markt
Fix Return BasicDataSource rather than DataSource from BasicDataSourceFactory so a cast is not required to use BasicDataSource specific methods. Fixes DBCP-364. markt
Fix The equals() implementations of the DelegatingXxx classes are now symmetric. There are some important API changes underlying this fix. Firstly, two DelegatingXxx instances are no longer considered equal if they have the same innermost delegate. Secondly, a DelegatingXxx instance is not considered equal to its innermost delegate. The getInnermostDelegateInternal() method has been made public (but remains part of the internal API) to allow classes extending this implementation to access the innermost delegate when required. Fixes DBCP-358. markt
Add Expose the new Pool 2 property evictionPolicyClassName to enable more sophisticated eviction strategies to be used. Fixes DBCP-368. markt
Add Add support for pooling PreparedStatements that use auto-generated keys. Fixes DBCP-406. Thanks to Steeve Beroard. markt
Fix Enable JDBC resources that are no longer referenced by client code to be eligible for garbage collection. Fixes DBCP-180. markt
Add Enable DBCP to work with a SecurityManager such that only DBCP needs to be granted the necessary permissions to communicate with the database. Fixes DBCP-177. markt
Fix Correct path to Javadoc overview in build.xml. Fixes DBCP-410. Thanks to Andreas Sturmlechner. markt
Fix The default values for readOnly, autoCommit and transactionIsolation are now taken from the JDBC driver. No calls to setReadOnly(), setAutoCommit() or setTransactionIsolation() will be made for a newly borrowed connection unless a default is explicitly configured and the connection is currently using a different setting. Fixes DBCP-234. markt
Add Register pooled connections with JMX so that they may be forcibly closed via JMX if required. Fixes DBCP-219. markt
Add Modify SharedPoolDataSource and PerUserPoolDataSource to expose all of the configuration properties of the underlying connection pool(s). This represents a significant refactoring of these classes and a number of property names have changed as a result. Fixes DBCP-373. markt
Add Provide an option to control if autoCommit is always set to true when a connection is returned to the connection pool. Fixes DBCP-351. markt
Add Provide an option to control if rollback is called when a connection is returned to the poll with autoCommit disabled. Fixes DBCP-399. markt
Add Provide an option to set the default query timeout. Fixes DBCP-340. markt
Fix Connection.isValid() should not throw an SQLException if the connection is closed. markt
Fix Use Connection.isValid() to validate connections unless a validation query is explicitly configured. Note that this means it is no longer necessary for a validation query to be specified in order for validation to take place. When testing with Oracle, this resulted in database validation being approximately 7 times faster. Fixes DBCP-357. markt
Add Add support for validation testing database connections on creation. Fixes DBCP-249. markt

Release 1.5.1 – not yet released

Type Changes By
Fix Correct the documentation for the maxOpenPreparedStatements parameter and review the use of the phrase non-positive throughout the documentation and javadoc, replacing it with negative where that is the correct definition to use. Fixes DBCP-400. markt
Fix Avoid multiple calls to Connection.getAutoCommit() in PoolableConnectionFactory.passivateObject() as it could be an expensive call. Fixes DBCP-405. markt
Fix Use one line per statement for methods with multiple statements rather than using a single line. Fixes DBCP-392. markt
Fix Expose all of the AbandonedConfig properties through a BasicDataSource. Fixes DBCP-396. markt
Fix Correct implementation of DelegatingConnection.isWrapperFor() so it works correctly with older JDBC drivers. Fixes DBCP-380. Thanks to Balazs Zsoldos. markt
Fix Correct implementation of DelegatingStatement.isWrapperFor(). Also fix DelegatingDatabaseMetaData.isWrapperFor() and DelegatingResultSet.isWrapperFor() that had the same problem. Fixes DBCP-347. Thanks to Robert Poskrobek. markt
Fix LocalXAConnectionFactory does not properly check if Xid is equal to currentXid when resuming which may result in an XAException. Fixes DBCP-341. Thanks to Ioannis Canellos. markt
Fix Ensure that the XAConnection is closed when the associated Connection is closed. Fixes DBCP-355. Thanks to Florent Guillaume. markt
Fix Clarify Jaavdoc for isClosed() method of PoolableConnection. Fixes DBCP-398. markt
Fix Avoid NullPointerException and throw an XAException if an attempt is made to commit the current transaction for a connection when no transaction has been started. Fixes DBCP-383. markt
Fix Using batchUpdate() should not invalidate the PreparedStatement when it is returned to the pool. Fixes DBCP-372. markt
Fix Improve documentation for JNDI example using BasicDataSource. Fixes DBCP-309. markt

Release 1.4.1 – not yet released

Type Changes By
Update Exposed GenericObjectPool's softMinEvictableIdleTimeMillis property for configuration and use by BasicDataSource. Fixes DBCP-334. Thanks to Alberto Mozzone. psteitz
Fix Made equals reflexive in DelegatingStatement (and subclasses), DelegatingMetaData, DelegatingResultSet and PoolingDriver#PoolGuardConnectionWrapper. Fixes DBCP-337. Thanks to Rob Gansevles. psteitz
Fix Modified createDataSource method in BasicDataSource to ensure that GenericObjectPool Evictor tasks are not started and orphaned when BasicDataSource encounters errors on initialization. Prior to this fix, when minIdle and timeBetweenEvictionRunsMillis are both positive, Evictors orphaned by failed initialization can continue to generate database connection requests. This issue is duplicated by DBCP-339 and DBCP-93. Fixes DBCP-342. Thanks to Byungchol Kim. psteitz
Fix Changed DelegatingDatabaseMetaData to no longer add itself to the AbandonedTrace of its parent connection. This was causing excessive memory consumption and was not necessary, as resultsets created by DelegatingDatabaseMetaData instances are attached to the parent connection's trace on creation. Also fixes DBCP-352. Fixes DBCP-330. psteitz
Fix Modified execute methods of Statement objects to ensure that whenever a statement is used, the lastUsed property of its parent connection is updated. Fixes DBCP-343. psteitz
Fix Correctly implemented the option to configure the class loader used to load the JDBC driver. Fixes DBCP-333. markt
Update LIFO configuration option has been added to BasicDataSource. When set to true (the default), the pool acts as a LIFO queue; setting to false causes connections to enter and exit to pool in FIFO order. Fixes DBCP-346. Thanks to Ken Tatsushita. psteitz
Fix Test transitive dependencies brought in by geronimo-transaction created version conflicts (commons logging and junit). These have been explicitly excluded in the POM. Fixes DBCP-344. Thanks to Jeremy Whiting. psteitz
Fix BasicDataSourceFactory incorrectly used "initConnectSqls" in versions 1.3 and 1.4 of DBCP as the property name for connectionInitSqls. Online docs for 1.3/1/4 have been updated to reflect this inconsistency. The BasicDataSourceFactory property name has been changed to "connectInitSqls" to match the online docs and the BasicDataSource property name. Fixes DBCP-348. Thanks to Eiji Takahashi. psteitz

Release 1.4 – 2010-02-14

Type Changes By
Fix Eliminated poolKeys cache from PerUserPoolDataSource. Fixes DBCP-320. psteitz
Fix Eliminated userKeys LRUMap cache from SharedPoolDataSource. Fixes DBCP-321. sebb
Fix Made private fields final where possible. Fixes DBCP-319. Thanks to Sebastian Bazley. psteitz
Fix PerUserPoolDataSource.getPooledConnectionAndInfo multi-threading bug. Fixes DBCP-318. Thanks to Sebastian Bazley. sebb
Fix Remove throws clause from method that does not throw an exception. Fixes DBCP-315. Thanks to Sebastian Bazley. sebb
Fix Remove code that catches and ignores Exceptions when calling PooledConnection.removeConnectionEventListener(ConnectionEventListener) as the method does not throw any Exceptions. Fixes DBCP-313. Thanks to Sebastian Bazley. sebb
Fix Remove impossible null check. Fixes DBCP-316. Thanks to Sebastian Bazley. sebb
Update Renamed variables with duplicate names in different scopes. Fixes DBCP-314. Thanks to Sebastian Bazley. sebb
Update Clarified javadoc for BasicDataSource close() method. Fixes DBCP-312. Thanks to Glen Mazza. psteitz
Add Made PoolingConnection pool CallableStatements. When BasicDataSource's poolPreparedStatements property is true, CallableStatements are now pooled along with PreparedStatements. The maxOpenPreparedStatements property limits the combined number of Callable and Prepared statements that can be in use at a given time. Fixes DBCP-204. Thanks to Wei Chen. psteitz
Update Use an API specific exception for logging abandoned objects to make scanning the logs for these exceptions simpler and to provide a better message that includes the creation time of the abandoned object. Fixes DBCP-305. Thanks to Christopher Schultz. markt
Fix Ensure Statement.getGeneratedKeys() works correctly with the CPDS adapter. Fixes DBCP-303. Thanks to Dave Oxley. markt
Fix Removed incorrectly advertised ClassNotFoundException from JOCLContentHandler.ConstructorDetails.createObject(). Fixes DBCP-302. Thanks to Sebastian Bazley. psteitz
Update Make the class loader used to load the JDBC driver configurable for the BasicDatasource. Fixes DBCP-203. Thanks to Mark Grand. markt
Fix Handle user password changes for InstanceKeyDataSources. Fixes DBCP-8. markt
Update Made XADataSource configurable in BasicManagedDataSource. Fixes DBCP-289. Thanks to Marc Kannegießer. psteitz
Fix Added PoolableManagedConnection and PoolableManagedConnectionFactory so that pooled managed connections can unregister themselves from transaction registries, avoiding resource leaks. Fixes DBCP-294. Thanks to Philippe Mouawad. psteitz
Update Added connectionProperties property to DriverAdapterCPDS. Fixes DBCP-276. psteitz
Add Added a validationQueryTimeout configuration parameter to BasicDataSource allowing the user to specify a timeout value (in seconds) for connection validation queries. Fixes DBCP-226. psteitz
Add Added a connectionInitSqls configuration parameter to BasicDataSource allowing the user to specify a collection of SQL statements to execute one time when a physical database connection is first opened. Fixes DBCP-175. Thanks to Jiri Melichna and Jerome Lacoste. psteitz
Fix PoolableConnectionFactory.makeObject() is no longer synchronized. This provides improved response times when load spikes at the cost of a faster rise in database server load. This change was made as a partial fix for DBCP-212. The synchronization changes in Commons Pool 1.5 complete the fix for this issue. Fixes DBCP-212. markt
Fix Reverted DelegatingConnection close to 1.2.2 version to ensure open statements are closed before the underlying connection is closed. Fixes DBCP-242. psteitz
Fix Refactor DelegatingConnection and ManagedConnection enable overridden equals() and hashcode() to work correctly. Fixes DBCP-235. markt
Update Add a DelegatingDatabaseMetaData to track ResultSets returned from DatabaseMetaData objects. Fixes DBCP-265. markt
Fix Modified BasicDataSourceFactory to complete initialization of the pool by creating initialSize connections rather than leaving this to lazy initialization when the pool is used. Fixes DBCP-215. markt
Fix Eliminated masked _stmt field in descendents of DelegatingStatement. Fixes DBCP-253. markt
Fix Modified DBCP sources to support compilation under JDK 1.4-1.6 using Ant flags to do conditional compilation. Fixes DBCP-191. Thanks to Michael Heuer and J. David Beutel. markt
Fix Added a static initializer to BasicDatasource that calls DriverManager.getDrivers() to force initialization before we ever do anything that might use Class.forName() to load (and register) a JDBC driver. Fixes DBCP-272. markt
Fix Eliminated direct System.out calls in AbandonedTrace. Fixes DBCP-4. markt
Fix Modified DelegatingStatement close to clear open batches. Fixes DBCP-264. niallp
Fix Eliminated unused private "parent" field in AbandonedTrace. Fixes DBCP-255. psteitz
Fix Fixed errors handling boolean-valued Reference properties in InstanceKeyObjectFactory, DriverAdapterCPDS that were causing testOnBorrow and poolPreparedStatements properties to be incorrectly set when creating objects from javax.naming.Reference instances. Fixes DBCP-273. Thanks to Mark Lin. psteitz
Fix Made private instance fields of AbandonedTrace volatile (parent, createdBy, lastUsed, createdTime) or final (trace). Fixes DBCP-271. Thanks to Sebastian Bazley. psteitz
Fix Narrowed synchronization in AbandonedTrace to resolve an Evictor deadlock. Fixes DBCP-270. Thanks to Filip Hanik. psteitz
Fix Corrected Javadoc to state that getLoginTimeout and setLoginTimeout are NOT supported by BasicDataSource. Fixes DBCP-218. bayard
Update Added Maven 2 pom.xml. Removed a block of code from TestJOCLed that set the Xerces parser manually. This was to support early JDKs. The 1.3 version of DBCP requires JDK 1.4+. Fixes DBCP-211. bayard
Add Added support for pooling managed connections. Fixes DBCP-228. Thanks to Dain Sundstrom. psteitz
Add Added BasicManagedDataSource, extending BasicDataSource. Also improved extensibility of BasicDataSource by encapsulating methods to create object pool, connection factory and datasource instance previously embedded in createDataSource. Fixes DBCP-230. Thanks to Dain Sundstrom. psteitz
Update Changed behavior to allow Connection, Statement, PreparedStatement, CallableStatement and ResultSet to be closed multiple times. The first time close is called the resource is closed and any subsequent calls have no effect. This behavior is required as per the Javadocs for these classes. Also added tests for closing all types multiple times and updated any tests that incorrectly assert that a resource can not be closed more then once. Fixes DBCP-3, DBCP-5, DBCP-23 and DBCP-134. Fixes DBCP-233. Thanks to Dain Sundstrom. psteitz
Update Modified PoolingDataSource, PoolingDriver and DelegatingStatement to assure that all returned Statements, PreparedStatements, CallableStatements and ResultSets are wrapped with a delegating object, which already properly handle the back pointers for Connection and Statement. Also added tests to to assure that the *same* object used to create the statement or result set is returned from either getConnection() or getStatement(). Fixes DBCP-11. Thanks to Dain Sundstrom. psteitz
Update SQLNestedException has been deprecated and will be replaced in DBCP 2.0 with SQLException and standard Java exception chaining. Fixes DBCP-143. dain
Fix BasicDataSource.close() now permanently marks the data source as closed, and no new connections can be obtained from the data source. At close all idle connections are destroyed and the method returns. As the remaining active connections are closed, they are destroyed. Fixes DBCP-221. dain
Fix Eliminated potential sources of NullPointerExceptions in PoolingConnection. Fixes DBCP-241. psteitz
Fix Improved error recovery and listener cleanup in KeyedCPDSConnectionFactory. Substituted calls to destroyObject with _pool.invalidateObject on error to ensure pool active count is decremented on error events. Ensured that events from closed or invalid connections are ignored and listeners are cleaned up. Fixes DBCP-216. Thanks to Marcos Sanz. psteitz
Fix Fixed error in SharedPoolDataSource causing incorrect passwords to be stored under certain conditions. Fixes DBCP-245. Thanks to Michael Drechsel. psteitz
Fix Added exception handler to ensure that PooledConnections are not orphaned when an exception occurs in setUpDefaults or clearWarnings in InstanceKeyDataSource.getConnection. Fixes DBCP-237. Thanks to Oliver Matz. psteitz
Fix Made getPool synchronized in PoolableConnectionFactory. Fixes inconsistent synchronization accessing _pool. Fixes DBCP-252. Thanks to FindBugs. psteitz
Fix Fixed inconsistent synchronization on _rollbackAfterValidation, _validationQuery and _pool in CPDSConnectionFactory and KeyedCPDSConnectionFactory by making the first two volatile and making both getter and setter for _pool synchronized. Fixes DBCP-252. Thanks to FindBugs. psteitz

Release 1.3 – 2010-02-14

Type Changes By
Update See <a href="changes-report.html#a1.4">DBCP 1.4 Changes </a> for details. Version 1.3 is identical to 1.4, other than JDBC 4 methods being filtered out of the DBCP 1.3 sources. Changes Since 1.2.2 are the same for 1.3 and 1.4.

Release 1.2.2 – 2007-04-04

Type Changes By
Add Add a <i>JNDI How To</i> to the User Guide. dirkv
Fix DriverManagerConnectionFactory: blank user name and password handling. Fixes DBCP-108. Thanks to Maxwell Grender-Jones. dirkv
Fix Broken behaviour for BasicDataSource.setMaxActive(0). Fixes DBCP-113. Thanks to Rohan Lenard. dirkv
Fix BasicDataSource does not work with getConnection(String, String). Fixes DBCP-36. Thanks to Jonathan Whitall. dirkv
Update Enhancements to prepared statement in DriverAdapterCPDS. Fixes DBCP-164. Thanks to Todd Carmichael. dirkv
Update Better messages and docs for LoginTimeout UnsupportedOperationException. Fixes DBCP-186. Thanks to Ralf Hauser. yoavs
Fix Error in JOCL snippet in org.apache.commons.dbcp package javadoc. Fixes DBCP-50. Thanks to Nicky Nicolson. yoavs
Update Added toString() methods to DelegatingPreparedStatement and DelegatingStatement. Fixes DBCP-165. Thanks to QM. yoavs
Fix Changes to make DBCP compile on JDK 1.5 by adding source="1.4" to compiler arguments (there are compiler errors in JDK 5.0 without this source switch that cannot be fixed without JDK 5.0-specific syntax). yoavs
Fix Per-user pooling with Oracle driver and default isolation settings. Fixes DBCP-20. Thanks to Chris Nappin. dirkv
Fix Error in JOCL document in javadoc. Fixes DBCP-9. Thanks to Adrian Baker. dirkv
Update Added toString() method to DelegatingConnection. sullis
Update Add DriverManager.invalidateConnection(). Fixes DBCP-181. Thanks to Meikel Bisping. dirkv
Fix Improved Exception nesting in ConnectionPool. Fixes DBCP-184. Thanks to Meikel Bisping. dirkv
Fix Fix broken website links for examples. Fixes DBCP-144. Thanks to Sebb. dennisl
Fix Modified PoolableConnection close method to invalidate instance when invoked on an already closed connection. Fixes DBCP-28. Thanks to Huw Lewis, James Ring. psteitz
Fix Inserted null checks to avoid NPE in close operations. Fixes DBCP-81. joehni
Fix Changed getReference method in InstanceKeyDataSource to return a concrete factory and added implementations of getReference in concrete subclasses. Fixes DBCP-105. Thanks to Sandy McArthur, Thomas Fischer. psteitz
Fix Inserted null check in close method of SharedPoolDataSource to avoid NPE when invoked on non-initialized pool. Fixes DBCP-39. Thanks to Jindrich Vimr. psteitz
Fix Document fact that true values for testOnBorrow, testOnReturn, testWhileIdle only have effect when validationQuery is set to a non-null string. Fixes DBCP-71. Thanks to Douglas Squirrel. psteitz
Fix Modified activateObject in PoolableConnection to test connection properties before resetting to defaults. Fixes DBCP-102. psteitz
Fix Corrected maxActive documentation in configuration.html. Fixes DBCP-188. sandymac
Update Upgraded dependency to Pool 1.3. psteitz
Update Added connection info to SQLException messages when closed connections (resp stmts) are accessed in DelegatingConnection, DelegatingStatement. Fixes DBCP-187. Thanks to Ralf Hauser. psteitz
Fix Fixed errors in pool parameter documentation and made 0 value for _maxPreparedStatements in DriverAdapterCPDS behave like a negative value, to be consistent with documentation and pool behavior. Fixes DBCP-41. Thanks to Anton Tagunov. psteitz
Fix Made userKeys an instance variable (i.e., not static) in SharedPoolDataSource. Fixes DBCP-100. psteitz
Fix Changed implementation of equals in PoolingDataSource.PoolGuardConnectionWrapper to ensure it is reflexive, even when wrapped connections are not DelegatingConnections. Fixes DBCP-198. psteitz
Update Added rollbackAfterValidation property and code to issue a rollback on a connection after validation when this property is set to true to eliminate Oracle driver exceptions. Default property value is false. Fixes DBCP-116. Thanks to Thomas Fischer. psteitz
Update Removed dependency on Commons Collections by adding collections 2.1 sources for LRUMap and SequencedHashMap with package scope to datasources package. Fixes DBCP-68. psteitz
Fix Removed synchronization from prepareStatement methods in PoolingConnection. Synchronization in these methods was causing deadlocks. No resources other than the prepared statement pool are accessed by these methods, and the pool methods are synchronized. Also fixes DBCP-202. Fixes DBCP-65. psteitz

Release 1.2.1 – 2004-06-12

Type Changes By
Fix See <a href="release-notes-1.2.1.html">DBCP 1.2.1 Release Notes</a> for details.

Release 1.2 – 2004-06-07

Type Changes By
Update See <a href="release-notes-1.2.html">DBCP 1.2 Release Notes</a> for details.

Release 1.1 – 2003-10-20

Type Changes By
Update See <a href="release-notes-1.1.html">DBCP 1.1 Release Notes</a> for details.

Release 1.0 – 2002-08-12

Type Changes By
Add Initial Release