You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gg...@apache.org on 2022/05/31 20:32:56 UTC

[commons-dbcp] branch master updated: Bump actions/cache from 3.0.2 to 3.0.3

This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-dbcp.git


The following commit(s) were added to refs/heads/master by this push:
     new e21b52aa Bump actions/cache from 3.0.2 to 3.0.3
e21b52aa is described below

commit e21b52aa3ce16881b5ae8a81360875a16b6f8090
Author: Gary Gregory <ga...@gmail.com>
AuthorDate: Tue May 31 16:32:51 2022 -0400

    Bump actions/cache from 3.0.2 to 3.0.3
---
 .github/workflows/maven.yml |   94 +-
 src/changes/changes.xml     | 2844 +++++++++++++++++++++----------------------
 2 files changed, 1469 insertions(+), 1469 deletions(-)

diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
index 2169c2de..24151bdd 100644
--- a/.github/workflows/maven.yml
+++ b/.github/workflows/maven.yml
@@ -1,47 +1,47 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements.  See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License.  You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name: Java CI
-
-on: [push, pull_request]
-
-jobs:
-  build:
-
-    runs-on: ubuntu-latest
-    continue-on-error: ${{ matrix.experimental }}
-    strategy:
-      matrix:
-        java: [ 8, 11, 17 ]
-        experimental: [false]
-#        include:
-#          - java: 18-ea
-#            experimental: true
-        
-    steps:
-    - uses: actions/checkout@v3
-    - uses: actions/cache@v3.0.2
-      with:
-        path: ~/.m2/repository
-        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
-        restore-keys: |
-          ${{ runner.os }}-maven-
-    - name: Set up JDK ${{ matrix.java }}
-      uses: actions/setup-java@v3
-      with:
-        distribution: 'temurin'
-        java-version: ${{ matrix.java }}
-    - name: Build with Maven
-      run: mvn -V --file pom.xml --no-transfer-progress
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#      http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+name: Java CI
+
+on: [push, pull_request]
+
+jobs:
+  build:
+
+    runs-on: ubuntu-latest
+    continue-on-error: ${{ matrix.experimental }}
+    strategy:
+      matrix:
+        java: [ 8, 11, 17 ]
+        experimental: [false]
+#        include:
+#          - java: 18-ea
+#            experimental: true
+        
+    steps:
+    - uses: actions/checkout@v3
+    - uses: actions/cache@v3.0.3
+      with:
+        path: ~/.m2/repository
+        key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+        restore-keys: |
+          ${{ runner.os }}-maven-
+    - name: Set up JDK ${{ matrix.java }}
+      uses: actions/setup-java@v3
+      with:
+        distribution: 'temurin'
+        java-version: ${{ matrix.java }}
+    - name: Build with Maven
+      run: mvn -V --file pom.xml --no-transfer-progress
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 9b664b20..061d95cf 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -1,1422 +1,1422 @@
-<?xml version="1.0"?>
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!--
-This file is used by the maven-changes-plugin to generate the release notes.
-Useful ways of finding items to add to this file are:
-
-1.  Add items when you fix a bug or add a feature (this makes the
-release process easy :-).
-
-2.  Do a bugzilla search for tickets closed since the previous release.
-
-3.  Use the report generated by the maven-changelog-plugin to see all
-SVN commits.  Set the project.properties' maven.changelog.range
-property to the number of days since the last release.
-
-To generate the release notes from this file:
-
-mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
-
-then tweak the formatting if necessary
-and commit
-
-The <action> type attribute can be add,update,fix,remove.
--->
-
-<document>
-  <properties>
-    <title>Apache Commons DBCP Release Notes</title>
-  </properties>
-    <!-- NOTE:
-    The description below is specially formatted so as to improve the layout of the generated release notes:
-    The parsing process removes all line feeds, replacing them with a single space.
-    The Velocity template in src/changes has been enhanced to replace pairs of adjacent spaces
-    with a new-line in the release notes. (These spaces are ignored when displaying HTML).
-    If the output is not quite correct, check for invisible trailing spaces!
-
-    N.B. The release notes template groups actions by type, and only extracts data for the current release.
-    The changes report outputs actions in the order they appear in this file.
-
-    To regenerate the release notes:
-    mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
-
-    Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
-    EvictionTimer
-     -->
-  <body>
-    <release version="2.10.0" date="2021-MM-DD" description="This is a minor release, including bug fixes and enhancements.">
-      <!-- FIX -->
-      <action dev="ggregory" type="fix" due-to="newnewcoder, Gary Gregory">
-        Fix StackOverflowError in PoolableConnection.isDisconnectionSqlException #123.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        PerUserPoolDataSourceFactory.getNewInstance(Reference) parsed defaultMaxWaitMillis as an int instead of a long.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        Reimplement time tracking in AbandonedTrace with an Instant instead of a long.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        Migrate away from deprecated APIs in Apache Commons Pool.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        Fix possible NullPointerException in BasicDataSourceFactory.validatePropertyNames().
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        Fix possible NullPointerException in BasicDataSourceFactory.getObjectInstance().
-      </action>
-      <action dev="ggregory" type="fix" due-to="Kurtcebe Eroglu, Gary Gregory, Phil Steitz" issue="DBCP-585">
-        Connection level JMX queries result in concurrent access to connection objects, causing errors #179
-      </action>
-      <!-- ADDS -->
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and use AbandonedTrace#setLastUsed(Instant).
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        - Add and use Duration versions of now deprecated APIs that use ints and longs. 
-        - Internally track durations with Duration objects instead of ints and longs.
-        - See the JApiCmp report for the complete list.
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add github/codeql-action.
-      </action>
-      <!-- UPDATES -->
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump actions/checkout from 2.3.4 to 3 #139, #143, #173.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
-        Bump actions/cache from 2.1.6 to 3.0.2 #147, #176.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Bump actions/setup-java from 2 to 3.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump checkstyle from 8.44 to 9.3 #121, #130, #149, #158, #190.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
-        Bump commons-pool2 2.10.0 to 2.11.1.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump junit-jupiter from 5.8.0-M1 to 5.8.2 #125, #136, #157.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump spotbugs from 4.3.0 to 4.7.0 #124, #133, #151, #164, #177, #189.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
-        Bump org.mockito:mockito-core 3.11.2 -> 4.5.1, #128, #138, #152, #175, #188.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump maven-javadoc-plugin from 3.3.0 to 3.4.0 #131, #184.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump maven-pmd-plugin from 3.14.0 to 3.16.0 #132, #172.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump narayana-jta from 5.12.0.Final to 5.12.6.Final #134, #156, #163, #185.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump japicmp-maven-plugin from 0.15.3 to 0.15.7 #137, #166, #174.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump spotbugs-maven-plugin from 4.3.0 to 4.6.0.0 #140, #154, #161, #178.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
-        Bump h2 from 1.4.200 to 2.0.212 #153, #183.
-        Update SQL for migration from H2 1.4.200 to 2.0.204 where "KEY" and "VALUE" are now reserved keywords.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump jboss-logging from 3.4.2.Final to 3.4.3.Final #162.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump slf4j-simple from 1.7.30 to 1.7.36 #169.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump commons-parent from 52 to 53 #180.
-      </action>
-    </release>
-    <release version="2.9.0" date="2021-07-30" description="This is a minor release, including bug fixes and enhancements.">
-      <!-- ADDS -->
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse Constants.KEY_USER and Constants.KEY_PASSWORD.
-      </action>
-      <action dev="ggregory" type="add" due-to="Frank Gasdorf, Gary Gregory">
-        Add and reuse DataSourceMXBean.
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse DriverAdapterCPDS.{get|set}DurationBetweenEvictionRuns(), deprecate {get|set}TimeBetweenEvictionRunsMillis(long).
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse DriverAdapterCPDS.{get|set}MinEvictableIdleDuration(), deprecate {get|set}MinEvictableIdleTimeMillis(int).
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse CPDSConnectionFactory.setMaxConnLifetime(Duration), deprecate setMaxConnLifetimeMillis(long).
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse KeyedCPDSConnectionFactory.setMaxConnLifetime(Duration), deprecate setMaxConnLifetimeMillis(long).
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse KeyedCPDSConnectionFactory.setMaxConnLifetime(Duration), deprecate setMaxConnLifetimeMillis(long).
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add and reuse InstanceKeyDataSource.{get|set}DefaultMaxWait(Duration), deprecate {get|set}DefaultMaxWaitMillis(long).
-      </action>
-      <!--  FIXES -->
-      <action dev="ggregory" type="fix" issue="DBCP-569" due-to="Florent Guillaume">
-        Fix test random failure on TestSynchronizationOrder.testInterposedSynchronization, #84.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-568" due-to="Florent Guillaume">
-        ManagedConnection must clear its cached state after transaction completes, #75.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Arturo Bernal">
-        Minor Improvements #78.
-      </action>
-      <action issue="DBCP-567" dev="ggregory" type="fix" due-to="Phil Steitz, Gary Gregory, Phil Steitz, Romain Manni-Bucau">
-        Use abort rather than close to clean up abandoned connections.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory, DaGeRe">
-        Performance Enhancement: Call toArray with Zero Array Size #20.
-      </action>
-      <action issue="DBCP-562" dev="ggregory" type="fix" due-to="Frank Gasdorf, Gary Gregory">
-        Avoid exposing password via JMX #38.
-      </action>
-      <action issue="DBCP-575" dev="ggregory" type="fix" due-to="Arturo Bernal">
-        Remove redundant initializers #98.
-      </action>
-      <action issue="DBCP-577" dev="ggregory" type="fix" due-to="Arturo Bernal">
-        Simplify test assertions #100, #113. 
-      </action>
-      <action issue="DBCP-573" dev="ggregory" type="fix" due-to="Réda Housni Alaoui, Gary Gregory">
-        DataSource implementations do not implement Wrapper interface correctly #93.
-      </action>
-      <action dev="ggregory" type="fix">
-        Replace FindBugs with SpotBugs.
-      </action>
-      <action dev="ggregory" type="fix">
-        DataSourceConnectionFactory.getUserPassword() may expose internal representation by returning DataSourceConnectionFactory.userPassword.
-      </action>
-      <action dev="ggregory" type="fix">
-        DataSourceXAConnectionFactory.getUserPassword() may expose internal representation by returning DataSourceXAConnectionFactory.userPassword.
-      </action>
-      <action dev="ggregory" type="fix">
-        DriverAdapterCPDS.getPasswordCharArray() may expose internal representation by returning DriverAdapterCPDS.userPassword.
-      </action>
-      <action dev="ggregory" type="fix">
-        new org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory(TransactionManager, XADataSource, String, char[], TransactionSynchronizationRegistry) may expose internal representation by storing an externally mutable object into DataSourceXAConnectionFactory.userPassword.
-      </action>
-      <action dev="ggregory" type="fix">
-        org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory.setPassword(char[]) may expose internal representation by storing an externally mutable object into DataSourceXAConnectionFactory.userPassword.
-      </action>
-      <action dev="ggregory" type="fix">
-        org.apache.commons.dbcp2.PStmtKey.getColumnIndexes() may expose internal representation by returning PStmtKey.columnIndexes.
-      </action>
-      <action dev="ggregory" type="fix">
-        org.apache.commons.dbcp2.PStmtKey.getColumnNames() may expose internal representation by returning PStmtKey.columnNames.
-      </action>
-      <action issue="DBCP-578" dev="ggregory" type="fix" due-to="Arturo Bernal">
-        Use Collections.synchronizedList() Instead Of Vector #101.
-      </action>
-      <action issue="DBCP-576" dev="ggregory" type="fix" due-to="Arturo Bernal">
-        Simplify and inline variables #99.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        Update PoolKey#toString() to avoid revealing a user name is here.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        Internal package private UserPassKey class stores its user name as a char[] as it already does the password.
-      </action>
-      <action issue="DBCP-579" dev="ggregory" type="fix" due-to="Shaktisinh Jhala, Gary Gregory">
-		Performance of DelegatingConnection.prepareStatement(String) regressed enormously in 2.8.0 compared to 1.4.
-        DelegatingConnection should also cache connection schema string to avoid calling the Connection#getSchema() for each key creation.
-        DelegatingConnection should also cache connection catalog string to avoid calling the Connection#getCatalog() for each key creation.
-      </action>
-      <action dev="ggregory" type="fix" due-to="Gary Gregory">
-        BasicDataSource should test for the presence of a security manager dynamically, not once on initialization.
-      </action>
-      <!-- UPDATES -->
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump mockito-core from 3.5.11 to 3.11.2 #66, #72, #77, #85, #91, #105, #110, #116.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump actions/checkout from v2.3.2 to v2.3.4 #65, #74.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump actions/cache from v2 to v2.1.6 #90, #108.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump commons-pool2 from 2.8.1 to 2.9.0.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
-        Bump actions/setup-java from v1.4.2 to v2 #69.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
-        Bump japicmp-maven-plugin from 0.14.3 to 0.15.2 #71, #82.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Bump maven-pmd-plugin from 3.13.0 to 3.14.0 #76.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
-        Bump japicmp-maven-plugin from 0.14.4 to 0.15.3, #83.
-      </action>
-      <action dev="ggregory" type="update" due-to="John Patrick">
-        Bump Hamcrest 1.3 -> 2.2 #70.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #88.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump junit-jupiter from 5.7.0 to 5.8.0-M1, #89, #106.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump narayana-jta from 5.10.6.Final to 5.12.0.Final #103, #111.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump maven-javadoc-plugin from 3.2.0 to 3.3.0 #107.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump commons.jacoco.version 0.8.6 -> 0.8.7.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump jboss-logging from 3.4.1.Final to 3.4.2.Final #109.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump org.jboss:jboss-transaction-spi from 7.6.0.Final to 7.6.1.Final.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump commons-pool2 from 2.9.0 to 2.10.0.
-      </action>
-      <action type="update" dev="ggregory" due-to="Gary Gregory">
-        Bump checkstyle to 8.44.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump spotbugs from 4.2.3 to 4.3.0 #117.
-      </action>
-      <action type="update" dev="ggregory" due-to="Dependabot">
-        Bump spotbugs-maven-plugin from 4.2.3 to 4.3.0 #118.
-      </action>
-    </release>
-    <release version="2.8.0" date="2020-09-21" description="This is a minor release, including bug fixes and enhancements.">
-      <!-- add -->
-      <action dev="ggregory" type="add" issue="DBCP-564" due-to="Florent Guillaume">
-        Fix BasicManagedDataSource leak of connections opened after transaction is rollback-only #39.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-566" due-to="Robert Paschek, Gary Gregory, Phil Steitz">
-        Add clearStatementPoolOnReturn #42.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-559" due-to="Phil Steitz">
-        Add start, restart methods to BasicDataSource. #50.
-      </action>
-      <!-- fix -->
-      <action dev="ggregory" type="fix" issue="DBCP-555" due-to="Gary Gregory">
-        NPE when creating a SQLExceptionList with a null list.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-558" due-to="louislatreille">
-        Fix DelegatingConnection readOnly and autoCommit caching mechanism #35.
-      </action>
-      <action dev="markt" type="fix" due-to="Sebastian Haas">
-        Fix regression introduced by unreleased code clean-up #63.
-      </action>
-      <action dev="ggregory" type="update" due-to="DoiMasayuki, Alexander Norz, Gary Gregory">
-        Update to PR#36 - PrepareStatement and prepareCall methods are extracted #37.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Do not display credentials in DriverAdapterCPDS.toString().
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Do not display credentials in DelegatingConnection.toString().
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Do not display credentials in DriverConnectionFactory.toString().
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Do not display credentials in PoolKey.toString().
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Do not display credentials in UserPassKey.toString().
-      </action>
-      <!-- UPDATES -->
-      <action dev="ggregory" type="update" issue="DBCP-650" due-to="Gary Gregory, Dependabot">
-        Update Apache Commons Pool from 2.7.0 to 2.8.1, #48.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from H2 1.4.199 to 1.4.200.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
-        Update tests from Mockito 3.0.0 to 3.5.11 #47, #60, #64.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from jboss-logging 3.4.0.Final to 3.4.1.Final.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from narayana-jta 5.9.5.Final to 5.10.6.Final, #61.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from junit-jupiter 5.5.1 to 5.7.0 #62.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from org.slf4j:slf4j-simple 1.7.26 to 1.7.30.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update build from com.github.siom79.japicmp:japicmp-maven-plugin 0.13.1 to 0.14.3.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update build from maven-javadoc-plugin 3.1.1 to 3.2.0.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update build from maven-pmd-plugin 3.12.0 to 3.13.0.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update org.apache.commons:commons-parent from 48 to 51.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update jacoco-maven-plugin from 0.8.4 to 0.8.6.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update maven-checkstyle-plugin from 3.0.0 to 3.1.1.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Update actions/checkout from v1 to v2.3.2, #44, #51.
-      </action>
-      <action dev="ggregory" type="update" due-to="Dependabot">
-        Update actions/setup-java from v1.4.0 to v1.4.2 #58.
-      </action>
-    </release>
-    <release version="2.7.0" date="2019-07-31" description="This is a minor release, including bug fixes and enhancements.">
-      <!-- add -->
-      <action dev="jleroux" type="add" issue="DBCP-539" due-to="Jacques Le Roux">
-        ManagedDataSource#close() should declare used exceptions.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-547" due-to="leechoongyon, Gary Gregory">
-        Add a ConnectionFactory class name setting for BasicDataSource.createConnectionFactory() #33.
-      </action>
-      <action dev="ggregory" type="add" due-to="Gary Gregory">
-        Add missing Javadocs.
-      </action>
-      <!-- fix -->
-      <action dev="ggregory" type="fix" issue="DBCP-538" due-to="Ragnar Haugan, Gary Gregory">
-        Wrong JMX base name derived in BasicDataSource#updateJmxName.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-546" due-to="Sergey Chupov">
-        Avoid NPE when calling DriverAdapterCPDS.toString().
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-550" due-to="Gary Gregory">
-        java.util.IllegalFormatException while building a message for a SQLFeatureNotSupportedException in Jdbc41Bridge.getObject(ResultSet,String,Class).
-      </action>
-      <action dev="ggregory" type="fix" due-to="LichKing-lee">
-        Fix Javadoc link in README.md #21.
-      </action>      
-      <!-- update -->
-      <action dev="ggregory" type="update" issue="DBCP-540" due-to="emopers">
-        Close ObjectOutputStream before calling toByteArray() on underlying ByteArrayOutputStream #28.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-541" due-to="Allon Murienik">
-        Upgrade to JUnit Jupiter #19.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-542" due-to="Zheng Feng, Gary Gregory">
-        Fix tests on Java 11.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-543" due-to="Gary Gregory">
-        Update Apache Commons Pool from 2.6.1 to 2.6.2.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-529" due-to="Yuri">
-        Add 'jmxName' property to web configuration parameters listing.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-548" due-to="Gary Gregory">
-        Update Apache Commons Pool from 2.6.2 to 2.7.0.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-549" due-to="Gary Gregory">
-        Make org.apache.commons.dbcp2.AbandonedTrace.removeTrace(AbandonedTrace) null-safe.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-551" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.DelegatingStatement.close() should try to close ALL of its result sets even when an exception occurs.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-552" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.DelegatingConnection.passivate() should close ALL of its resources even when an exception occurs.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-553" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.PoolablePreparedStatement.passivate() should close ALL of its resources even when an exception occurs.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-554" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.PoolableCallableStatement.passivate() should close ALL of its resources even when an exception occurs.
-      </action>
-      <!-- update, no Jira -->     
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from org.mockito:mockito-core 2.28.2 to 3.0.0.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from H2 1.4.198 to 1.4.199.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from com.h2database:h2 1.4.197 to 1.4.199.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from org.jboss.narayana.jta:narayana-jta 5.9.2.Final to 5.9.5.Final.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from org.jboss.logging:jboss-logging 3.3.2.Final to 3.4.0.Final.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from org.mockito:mockito-core 2.24.0 to 2.28.2.
-      </action>
-      <action dev="ggregory" type="update" due-to="Gary Gregory">
-        Update tests from org.mockito:mockito-core 2.28.2 to 3.0.0.
-      </action>
-    </release>
-    <release version="2.6.0" date="2019-02-14" description="This is a minor release, including bug fixes and enhancements.">
-      <action dev="chtompki" type="add" issue="DBCP-534" due-to="Peter Wicks">
-        Allow for manual connection eviction.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-514" due-to="Tom Jenkinson, Gary Gregory">
-        Allow DBCP to register with a TransactionSynchronizationRegistry for XA cases.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-517" due-to="Gary Gregory">
-        Make defensive copies of char[] passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-515" due-to="Tom Jenkinson, Gary Gregory">
-        Do not try to register synchronization when the transaction is no longer active.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-516" due-to="Tom Jenkinson, Gary Gregory">
-        Do not double returnObject back to the pool if there is a transaction context with a shared connection.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-518" due-to="Gary Gregory">
-        Allow DBCP to work with old Java 6/JDBC drivers without throwing AbstractMethodError.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-519" due-to="Gary Gregory">
-        Add some toString() methods for debugging (never printing passwords.)
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-520" due-to="Zheng Feng">
-        BasicManagedDataSource needs to pass the TSR with creating DataSourceXAConnectionFactory.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-527" due-to="Gary Gregory">
-        Add getters to some classes.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-528" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.DriverManagerConnectionFactory should use a char[] instead of a String to store passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-537" due-to="Gary Gregory">
-        Update Apache Commons Pool from 2.6.0 to 2.6.1.
-      </action>
-    </release>
-    <release version="2.5.0" date="2018-07-15" description="This is a minor release, including bug fixes and enhancements.">
-      <action dev="ggregory" type="update" issue="DBCP-505" due-to="Gary Gregory">
-        Update Java requirement from version 7 to 8.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-506" due-to="Gary Gregory">
-        Support JDBC 4.2.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-479" due-to="Guillaume Husta, Gary Gregory">
-        Support default schema in configuration.
-      </action>
-       <action dev="ggregory" type="update" issue="DBCP-427" due-to="Vladimir Konkov, Phil Steitz, Gary Gregory">
-        Examines 'SQLException's thrown by underlying connections or statements for fatal (disconnection) errors.
-      </action>
-       <action dev="ggregory" type="update" issue="DBCP-507" due-to="Vladimir Konkov, Phil Steitz, Gary Gregory">
-        Change default for fail-fast connections from false to true.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-508" due-to="Gary Gregory">
-        Prepared statement keys should take a Connection's schema into account.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-504" due-to="Bruno P. Kinoshita">
-        Increase test coverage.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-510" due-to="Gary Gregory">
-        Update Apache Commons Pool from 2.5.0 to 2.6.0.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-512" due-to="Gary Gregory">
-        Avoid exceptions when closing a connection in mutli-threaded use case.
-      </action>
-    </release>
-    <release version="2.4.0" date="2018-06-12" description="This is a minor release, including bug fixes and enhancements.">
-      <action dev="ggregory" type="fix" issue="DBCP-484" due-to="Emanuel Freitas">
-        Connection leak during XATransaction in high load.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-492" due-to="Gary Gregory">
-        Drop Ant build.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-491" due-to="Zheng Feng, Gary Gregory">
-        Ensure DBCP ConnectionListener can deal with transaction managers which invoke rollback in a separate thread.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-494" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.PStmtKey should make copies of given arrays in constructors.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-495" due-to="Gary Gregory">
-        Remove duplicate code in org.apache.commons.dbcp2.cpdsadapter.PStmtKeyCPDS.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-496" due-to="Gary Gregory">
-        Add support for pooling CallableStatements to the org.apache.commons.dbcp2.cpdsadapter package.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-497" due-to="Gary Gregory">
-        Deprecate use of PStmtKeyCPDS in favor of PStmtKey.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-498" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.DataSourceConnectionFactory should use a char[] instead of a String to store passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-499" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory should use a char[] instead of a String to store passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-500" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS should use a char[] instead of a String to store passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-501" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.datasources.CPDSConnectionFactory should use a char[] instead of a String to store passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-502" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.datasources internals should use a char[] instead of a String to store passwords.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-503" due-to="Gary Gregory">
-        org.apache.commons.dbcp2.datasources.InstanceKeyDataSourceFactory.closeAll() does not close all.
-      </action>
-    </release>
-    <release version="2.3.0" date="2018-05-12" description="This is a minor release, including bug fixes and enhancements.">
-      <action dev="pschumacher" type="fix" issue="DBCP-476" due-to="Gary Evesson, Richard Cordova">
-        AbandonedTrace.getTrace() contains race condition.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-482" due-to="Dennis Lloyd, Gary Gregory">
-        Avoid javax.management.InstanceNotFoundException on shutdown when a bean is not registered. Closes #9.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-483" due-to="Gary Gregory">
-        Make constant public: org.apache.commons.dbcp2.PoolingDriver.URL_PREFIX.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-486" due-to="Gary Gregory">
-        DriverAdapterCPDS.setUser(), setPassword(), and getPooledConnection() with null arguments throw NullPointerExceptions when connection properties are set.
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-487" due-to="Gary Gregory">
-        Add API org.apache.commons.dbcp2.datasources.PerUserPoolDataSource.clear().
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-488" due-to="Gary Gregory">
-        NPE for org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS.setConnectionProperties(null).
-      </action>
-      <action dev="ggregory" type="update" issue="DBCP-490" due-to="Gary Gregory">
-        The method org.apache.commons.dbcp2.PoolingDriver.getConnectionPool(String) does not tell you which pool name is not registered when it throws an exception.
-      </action>
-    </release>
-    <release version="2.2.0" date="2017-12-27" description="This is a minor release, including bug fixes and enhancements.">
-      <action dev="ggregory" type="fix" issue="DBCP-481" due-to="Gary Gregory">
-        Update Apache Commons Pool from 2.4.2 to 2.5.0.
-      </action>
-      <action dev="mattsicker" type="fix" issue="DBCP-454" due-to="Philipp Marx, Matt Sicker">
-        OSGi declarations contain multiple import headers for javax.transaction.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-478" due-to="nicola mele">
-        Wrong parameter name in site documentation for BasicDataSource Configuration Parameters.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-452">
-        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.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-446" due-to="Gary Gregory, feng yang, Euclides M, Phil Steitz">
-        NullPointerException thrown when calling ManagedConnection.isClosed().
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-444">
-        InvalidateConnection can result in closed connection returned by getConnection.
-      </action>
-      <action dev="ggregory" type="fix" issue="DBCP-449" due-to="Grzegorz D.">
-        Complete the fix for DBCP-418, enabling PoolableConnection class to load in environments
-        (such as GAE) where the JMX ManagementFactory is not available.
-      </action>
-      <action dev="ggregory" type="add" issue="DBCP-451">
-        Add constructor DriverManagerConnectionFactory(String).
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-455" due-to="Kyohei Nakamura">
-        Ensure that the cacheState setting is used when statement pooling is
-        disabled.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-453" due-to="Philipp Marx">
-        Ensure that setSoftMinEvictableIdleTimeMillis is used when working with
-        BasicDataSource.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-456" due-to="Kyohei Nakamura">
-        Correct the name of the configuration attribute
-        softMinEvictableIdleTimeMillis.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-472">
-        Avoid potential infinite loops when checking if an SQLException is fatal
-        for a connection or not.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-468">
-        Expand the fail-fast for fatal connection errors feature to include
-        managed connections.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-463">
-        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.
-      </action>
-       <action dev="markt" type="add" issue="DBCP-462" due-to="Keiichi Fujino">
-         Refactoring to prepare for a future patch to enable pooling of all
-         prepared and callable statements in PoolingConnection.
-       </action>
-       <action dev="markt" type="fix" issue="DBCP-459">
-         Ensure that a thread's interrupt status is visible to the caller if the
-         thread is interrupted during a call to
-         PoolingDataSource.getConnection().
-       </action>
-       <action dev="markt" type="add" issue="DBCP-458" due-to="Adrian Tarau">
-         Make it simpler to extend BasicDataSource to allow sub-classes to
-         provide custom GenericObjectPool implementations.
-       </action>
-       <action dev="markt" type="fix" issue="DBCP-457">
-         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.
-       </action>
-       <action dev="markt" type="add" issue="DBCP-474" due-to="Keiichi Fujino">
-         Enable pooling of all prepared and callable statements
-         inPoolingConnection.
-       </action>
-    </release>
-    <release version="2.1.1" date="6 Aug 2015" description=
-"This is a patch release, including bug fixes only.">
-      <action dev="psteitz" type="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.
-      </action>
-      <action issue="DBCP-441" dev="psteitz" type="fix">
-        Added BasicDataSource abandonedUsageTracking property missing from BasicDataSourceFactory.
-      </action>
-      <action issue="DBCP-442" dev="psteitz" type="fix">
-        SharedPoolDataSource getConnection fails when testOnBorrow is set with
-        a null validation query.
-      </action>
-      <action issue="DBCP-438" dev="psteitz" type="fix" due-to="Raihan Kibria">
-        Nested connections in a transaction (local) throws null pointer.
-      </action>
-      <action issue="DBCP-437" dev="psteitz" type="fix">
-        BasicDataSource does not set disconnectionSql properties on its PoolableConnectionFactory.
-      </action>
-    </release>
-    <release version="2.1" date="23 Feb 2015" description=
- "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.
-      ">
-      <action issue="DBCP-420" dev="sebb" type="fix">
-        InstanceKeyDataSource discards native SQLException when given password does not match
-        password used to create the connection.
-      </action>
-      <action issue="DBCP-422" dev="ggregory" type="update">
-        Update Apache Commons Logging to 1.2 from 1.1.3.
-      </action>
-      <action dev="markt" type="fix">
-        Correct some Javadoc references to Apache Commons Pool 2 classes that
-        have changed names since Pool 1.x.
-      </action>
-      <action dev="markt" type="fix">
-        Do not ignore the configured custom eviction policy when creating a
-        BasicDataSource.
-      </action>
-      <action dev="psteitz" type="add" issue="DBCP-426" due-to="Kasper Sørensen">
-        Added invalidateConnection method to BasicDataSource.
-      </action>
-      <action issue="DBCP-428" dev="psteitz" type="fix" due-to="Vladimir Konkov">
-        Unsuccessful Connection enlistment in XA Transaction ignored by TransactionContext.
-      </action>
-      <action issue="DBCP-424" dev="psteitz" type="update">
-        Made expired connection logging configurable in BasicDataSource.  Setting
-        logExpiredConnections to false suppresses expired connection log messages.
-      </action>
-      <action issue="DBCP-423" dev="psteitz" type="update">
-        Made Datasources implement AutoCloseable.
-      </action>
-      <action issue="DBCP-427" dev="psteitz" type="add" due-to="Vladimir Konkov">
-        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).
-      </action>
-      <action issue="DBCP-432" dev="psteitz" type="fix">
-        Changed BasicDataSource createDataSource method to ensure that initialization
-        completes before clients get reference to newly created instances.
-      </action>
-      <action issue="DBCP-433" dev="psteitz" type="fix" due-to="Vladimir Konkov">
-        Fixed connection leak when SQLException is thrown while enlisting an XA
-        transaction.
-      </action>
-      <action issue="DBCP-434" dev="psteitz" type="fix">
-        Setting jmxName to null should suppress JMX registration of connection
-        and statement pools.
-      </action>
-      <action dev="psteitz" type="update">
-        Eliminated synchronization in BasicDataSource getNumActive, getNumIdle methods.
-      </action>
-      <action issue="DBCP-435" type="update" due-to="Denixx Baykin">
-        Added property name verification to BasicDataSourceFactory. References including
-        obsolete or unrecognized properties now generate log messages.
-      </action>
-    </release>
-    <release version="2.0.1" date="24 May 2014" description="This is a bug fix release.">
-      <action dev="markt" type="fix">
-        Small performance improvements when returning connections to the pool.
-      </action>
-      <action issue="DBCP-414" dev="markt" type="fix" due-to="Pasi Eronen">
-        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.
-      </action>
-      <action issue="DBCP-412" dev="psteitz" type="update">
-        Added check in PoolingDataSource constructor to ensure that the connection factory
-        and pool are properly linked.
-      </action>
-      <action issue="DBCP-417" dev="psteitz" type="fix">
-        Fixed connection leak when managed connections are closed during transactions.
-      </action>
-      <action issue="DBCP-418" dev="psteitz" type="fix">
-        Enable PoolableConnection class to load without JMX.
-      </action>
-    </release>
-    <release version="2.0" date="3 March 2014" description=
-"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.
-      ">
-      <action issue="DBCP-411" dev="sebb" type="fix">
-        BasicManagedDataSource - unregister from JMX on close().
-      </action>
-        <action issue="DBCP-154" dev="markt" type="fix">
-        Log validation failures of poolable connections.
-      </action>
-      <action issue="DBCP-403" dev="sebb" type="fix">
-        DelegatingStatement.close() fails with NPE if statement is null
-      </action>
-      <action issue="DBCP-322" dev="sebb" type="fix">
-        CPDSConnectionFactory.validateObject(Object) ignores Throwable.
-      </action>
-      <action dev="markt" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-300" type="fix">
-        Removed unnecessary synchronisation in BasicDataSource#createDataSource.
-      </action>
-      <action dev="markt" type="update">
-        The Java package name has been changed from org.apache.commons.dbcp to
-        org.apache.commons.dbcp2.
-      </action>
-      <action dev="markt" type="update">
-        Update to Commons Pool 2 (based on java.util.concurrent) to provide
-        pooling functionality.
-      </action>
-      <action dev="markt" type="update">
-        Updated source code for Java 1.6 (added @Override &amp; @Deprecated
-        annotations).
-      </action>
-      <action dev="markt" type="update">
-        Removed JOCL support.
-      </action>
-      <action dev="markt" issue="DBCP-143" type="update">
-        Remove deprecated SQLNestedException.
-      </action>
-      <action dev="markt" issue="DBCP-384" type="fix">
-        Fix threading issues with accessToUnderlyingConnectionAllowed attribute
-        of PoolingDriver which is used to support unit testing.
-      </action>
-      <action dev="markt" issue="DBCP-292" type="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).
-      </action>
-      <action dev="markt" issue="DBCP-376" type="fix" due-to="Dave Oxley">
-        Fix thread safety issues in the SharedPoolDataSource and the
-        PerUserPoolDataSource.
-      </action>
-      <action dev="markt" issue="DBCP-382" type="fix" due-to="Stefan Rempfer">
-        Allow accessToUnderlyingConnectionAllowed to be configured when
-        configuration takes place via JNDI in a JavaEE container.
-      </action>
-      <action dev="markt" issue="DBCP-369" type="fix" due-to="Michael Pradel">
-        Fix threading issue when using multiple instances of the
-        SharedPoolDataSource concurrently.
-      </action>
-      <action dev="markt" issue="DBCP-391" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-404" type="fix">
-        Make all mutable fields private.
-      </action>
-      <action dev="markt" issue="DBCP-364" type="fix">
-        Return BasicDataSource rather than DataSource from
-        BasicDataSourceFactory so a cast is not required to use BasicDataSource
-        specific methods.
-      </action>
-      <action dev="markt" issue="DBCP-358" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-368" type="add">
-        Expose the new Pool 2 property evictionPolicyClassName to enable more
-        sophisticated eviction strategies to be used.
-      </action>
-      <action dev="markt" issue="DBCP-406" type="add" due-to="Steeve Beroard">
-        Add support for pooling PreparedStatements that use auto-generated keys.
-      </action>
-      <action dev="markt" issue="DBCP-180" type="fix">
-        Enable JDBC resources that are no longer referenced by client code to be
-        eligible for garbage collection.
-      </action>
-      <action dev="markt" issue="DBCP-177" type="add">
-        Enable DBCP to work with a SecurityManager such that only DBCP needs to
-        be granted the necessary permissions to communicate with the database.
-      </action>
-      <action dev="markt" issue="DBCP-410" type="fix" due-to="Andreas Sturmlechner">
-        Correct path to Javadoc overview in build.xml.
-      </action>
-      <action dev="markt" issue="DBCP-234" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-219" type="add">
-        Register pooled connections with JMX so that they may be forcibly closed
-        via JMX if required.
-      </action>
-      <action dev="markt" issue="DBCP-373" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-351" type="add">
-        Provide an option to control if autoCommit is always set to true when a
-        connection is returned to the connection pool.
-      </action>
-      <action dev="markt" issue="DBCP-399" type="add">
-        Provide an option to control if rollback is called when a connection is
-        returned to the poll with autoCommit disabled.
-      </action>
-      <action dev="markt" issue="DBCP-340" type="add">
-        Provide an option to set the default query timeout.
-      </action>
-      <action dev="markt" type="fix">
-        Connection.isValid() should not throw an SQLException if the connection
-        is closed.
-      </action>
-      <action dev="markt" issue="DBCP-357" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-249" type="add">
-        Add support for validation testing database connections on creation.
-      </action>
-    </release>
-    <release version="1.5.1" date="not yet released" description="TBD">
-      <action dev="markt" issue="DBCP-400" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-405" type="fix">
-        Avoid multiple calls to Connection.getAutoCommit() in
-        PoolableConnectionFactory.passivateObject() as it could be an expensive
-        call.
-      </action>
-      <action dev="markt" issue="DBCP-392" type="fix">
-        Use one line per statement for methods with multiple statements rather
-        than using a single line.
-      </action>
-      <action dev="markt" issue="DBCP-396" type="fix">
-        Expose all of the AbandonedConfig properties through a BasicDataSource.
-      </action>
-      <action dev="markt" issue="DBCP-380" type="fix" due-to="Balazs Zsoldos">
-        Correct implementation of DelegatingConnection.isWrapperFor() so it
-        works correctly with older JDBC drivers.
-      </action>
-      <action dev="markt" issue="DBCP-347" type="fix" due-to="Robert Poskrobek">
-        Correct implementation of DelegatingStatement.isWrapperFor(). Also fix
-        DelegatingDatabaseMetaData.isWrapperFor() and
-        DelegatingResultSet.isWrapperFor() that had the same problem.
-      </action>
-      <action dev="markt" issue="DBCP-341" type="fix" due-to="Ioannis Canellos">
-        LocalXAConnectionFactory does not properly check if Xid is equal to
-        currentXid when resuming which may result in an XAException.
-      </action>
-      <action dev="markt" issue="DBCP-355" type="fix" due-to="Florent Guillaume">
-        Ensure that the XAConnection is closed when the associated Connection is
-        closed.
-      </action>
-      <action dev="markt" issue="DBCP-398" type="fix">
-        Clarify Jaavdoc for isClosed() method of PoolableConnection.
-      </action>
-      <action dev="markt" issue="DBCP-383" type="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.
-      </action>
-      <action dev="markt" issue="DBCP-372" type="fix">
-        Using batchUpdate() should not invalidate the PreparedStatement when it
-        is returned to the pool.
-      </action>
-      <action dev="markt" issue="DBCP-309" type="fix">
-        Improve documentation for JNDI example using BasicDataSource.
-      </action>
-    </release>
-    <release version="1.4.1" date="not yet released" description="TBD">
-      <action dev="psteitz" issue="DBCP-334" type="update" due-to="Alberto Mozzone">
-        Exposed GenericObjectPool's softMinEvictableIdleTimeMillis property for
-        configuration and use by BasicDataSource.
-      </action>
-      <action dev="psteitz" issue="DBCP-337" type="fix" due-to="Rob Gansevles">
-        Made equals reflexive in DelegatingStatement (and subclasses), DelegatingMetaData,
-        DelegatingResultSet and PoolingDriver#PoolGuardConnectionWrapper.
-      </action>
-      <action dev="psteitz" issue="DBCP-342" type="fix" due-to="Byungchol Kim">
-        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.
-      </action>
-      <action dev="psteitz" issue="DBCP-330" type="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.
-      </action>
-      <action dev="psteitz" issue="DBCP-343" type="fix">
-        Modified execute methods of Statement objects to ensure that whenever
-        a statement is used, the lastUsed property of its parent connection is
-        updated.
-      </action>
-      <action dev="markt" issue="DBCP-333" type="fix">
-        Correctly implemented the option to configure the class loader used to load
-        the JDBC driver.
-      </action>
-      <action dev="psteitz" issue="DBCP-346" type="update" due-to="Ken Tatsushita">
-        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.
-      </action>
-      <action dev="psteitz" issue="DBCP-344" type="fix" due-to="Jeremy Whiting">
-        Test transitive dependencies brought in by geronimo-transaction created
-        version conflicts (commons logging and junit).  These have been explicitly
-        excluded in the POM.
-      </action>
-      <action dev="psteitz" issue="DBCP-348" type="fix" due-to="Eiji Takahashi">
-        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.
-      </action>
-    </release>
-    <release version="1.4" date="2010-02-14" description="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 ">
-      <action dev="psteitz" type="fix" issue="DBCP-320">
-        Eliminated poolKeys cache from PerUserPoolDataSource.
-      </action>
-      <action dev="sebb" type="fix" issue="DBCP-321">
-        Eliminated userKeys LRUMap cache from SharedPoolDataSource.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-319" due-to="Sebastian Bazley">
-        Made private fields final where possible.
-      </action>
-      <action dev="sebb" type="fix" issue="DBCP-318" due-to="Sebastian Bazley">
-        PerUserPoolDataSource.getPooledConnectionAndInfo multi-threading bug.
-      </action>
-      <action dev="sebb" type="fix" issue="DBCP-315" due-to="Sebastian Bazley">
-        Remove throws clause from method that does not throw an exception.
-      </action>
-      <action dev="sebb" type="fix" issue="DBCP-313" due-to="Sebastian Bazley">
-        Remove code that catches and ignores Exceptions when calling
-        PooledConnection.removeConnectionEventListener(ConnectionEventListener)
-        as the method does not throw any Exceptions.
-      </action>
-      <action dev="sebb" type="fix" issue="DBCP-316" due-to="Sebastian Bazley">
-        Remove impossible null check.
-      </action>
-      <action dev="sebb" type="update" issue="DBCP-314" due-to="Sebastian Bazley">
-        Renamed variables with duplicate names in different scopes.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-312" due-to="Glen Mazza">
-        Clarified javadoc for BasicDataSource close() method.
-      </action>
-      <action dev="psteitz" type="add" issue="DBCP-204" due-to="Wei Chen">
-        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.
-      </action>
-      <action dev="markt" type="update" issue="DBCP-305" due-to="Christopher Schultz">
-        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.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-303" due-to="Dave Oxley">
-        Ensure Statement.getGeneratedKeys() works correctly with the CPDS
-        adapter.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-302" due-to="Sebastian Bazley">
-        Removed incorrectly advertised ClassNotFoundException from
-        JOCLContentHandler.ConstructorDetails.createObject().
-      </action>
-      <action dev="markt" type="update" issue="DBCP-203" due-to="Mark Grand">
-        Make the class loader used to load the JDBC driver configurable for the
-        BasicDatasource.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-8">
-        Handle user password changes for InstanceKeyDataSources.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-289" due-to="Marc Kannegießer">
-        Made XADataSource configurable in BasicManagedDataSource.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-294" due-to="Philippe Mouawad">
-        Added PoolableManagedConnection and PoolableManagedConnectionFactory so that
-        pooled managed connections can unregister themselves from transaction registries,
-        avoiding resource leaks.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-276">
-        Added connectionProperties property to DriverAdapterCPDS.
-      </action>
-      <action dev="psteitz" type="add" issue="DBCP-226">
-        Added a validationQueryTimeout configuration parameter to BasicDataSource
-        allowing the user to specify a timeout value (in seconds) for connection
-        validation queries.
-      </action>
-      <action dev="psteitz" type="add" issue="DBCP-175" due-to="Jiri Melichna and Jerome Lacoste">
-        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.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-212">
-        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.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-242">
-        Reverted DelegatingConnection close to 1.2.2 version to ensure
-        open statements are closed before the underlying connection is closed.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-235">
-        Refactor DelegatingConnection and ManagedConnection enable overridden
-        equals() and hashcode() to work correctly.
-      </action>
-      <action dev="markt" type="update" issue="DBCP-265">
-        Add a DelegatingDatabaseMetaData to track ResultSets returned from
-        DatabaseMetaData objects.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-215">
-        Modified BasicDataSourceFactory to complete initialization of the pool
-        by creating initialSize connections rather than leaving this to lazy
-        initialization when the pool is used.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-253">
-        Eliminated masked _stmt field in descendents of DelegatingStatement.
-       </action>
-      <action dev="markt" type="fix" issue="DBCP-191" due-to="Michael Heuer and J. David Beutel" >
-        Modified DBCP sources to support compilation under JDK 1.4-1.6
-        using Ant flags to do conditional compilation.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-272">
-        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.
-      </action>
-      <action dev="markt" type="fix" issue="DBCP-4">
-        Eliminated direct System.out calls in AbandonedTrace.
-      </action>
-      <action dev="niallp" type="fix" issue="DBCP-264">
-        Modified DelegatingStatement close to clear open batches.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-255">
-        Eliminated unused private "parent" field in AbandonedTrace.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-273" due-to="Mark Lin">
-        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.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-271" due-to="Sebastian Bazley">
-        Made private instance fields of AbandonedTrace volatile (parent,
-        createdBy, lastUsed, createdTime) or final (trace).
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-270" due-to="Filip Hanik">
-        Narrowed synchronization in AbandonedTrace to resolve an Evictor deadlock.
-      </action>
-      <action dev="bayard" type="fix" issue="DBCP-218">
-        Corrected Javadoc to state that getLoginTimeout and setLoginTimeout are
-        NOT supported by BasicDataSource.
-      </action>
-      <action dev="bayard" type="update" issue="DBCP-211">
-        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+.
-      </action>
-      <action dev="psteitz" type="add" issue="DBCP-228" due-to="Dain Sundstrom">
-        Added support for pooling managed connections.
-      </action>
-      <action dev="psteitz" type="add" issue="DBCP-230" due-to="Dain Sundstrom">
-        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.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-233" due-to="Dain Sundstrom">
-        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.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-11" due-to="Dain Sundstrom">
-        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().
-      </action>
-      <action dev="dain" type="update" issue="DBCP-143">
-        SQLNestedException has been deprecated and will be replaced in DBCP 2.0 with
-        SQLException and standard Java exception chaining.
-      </action>
-      <action dev="dain" type="fix" issue="DBCP-221">
-        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.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-241">
-        Eliminated potential sources of NullPointerExceptions in
-        PoolingConnection.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-216" due-to="Marcos Sanz">
-        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.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-245" due-to="Michael Drechsel">
-        Fixed error in SharedPoolDataSource causing incorrect passwords to be
-        stored under certain conditions.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-237" due-to="Oliver Matz">
-        Added exception handler to ensure that PooledConnections are not
-        orphaned when an exception occurs in setUpDefaults or clearWarnings in
-        InstanceKeyDataSource.getConnection.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-252" due-to="FindBugs">
-        Made getPool synchronized in PoolableConnectionFactory.
-        Fixes inconsistent synchronization accessing _pool.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-252" due-to="FindBugs">
-        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.
-      </action>
-    </release>
-    <release version="1.3" date="2010-02-14" description="Compatability release for JDBC 3.
-      See version 1.4 description and change log.">
-     <action type="update">
-        See &lt;a href="changes-report.html#a1.4"&gt;DBCP 1.4 Changes &lt;/a&gt; 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.
-      </action>
-    </release>
-    <release version="1.2.2" date="2007-04-04"
-      description="This is a maintenance release containing bug fixes
-      and enhancements. All API changes are binary compatible with version 1.2.1.">
-      <action dev="dirkv " type="add">
-        Add a &lt;i&gt;JNDI How To&lt;/i&gt; to the User Guide.
-      </action>
-      <action dev="dirkv " type="fix" issue="DBCP-108" due-to="Maxwell Grender-Jones">
-        DriverManagerConnectionFactory: blank user name and password handling.
-      </action>
-      <action dev="dirkv " type="fix" issue="DBCP-113" due-to="Rohan Lenard">
-        Broken behaviour for BasicDataSource.setMaxActive(0).
-      </action>
-      <action dev="dirkv " type="fix" issue="DBCP-36" due-to="Jonathan Whitall">
-        BasicDataSource does not work with getConnection(String, String).
-      </action>
-      <action dev="dirkv " type="update" issue="DBCP-164" due-to="Todd Carmichael">
-        Enhancements to prepared statement in DriverAdapterCPDS.
-      </action>
-      <action dev="yoavs" type="update" issue="DBCP-186" due-to="Ralf Hauser">
-        Better messages and docs for LoginTimeout UnsupportedOperationException.
-      </action>
-      <action dev="yoavs" type="fix" issue="DBCP-50" due-to="Nicky Nicolson">
-        Error in JOCL snippet in org.apache.commons.dbcp package javadoc.
-      </action>
-      <action dev="yoavs" type="update" issue="DBCP-165" due-to="QM">
-        Added toString() methods to DelegatingPreparedStatement and DelegatingStatement
-      </action>
-      <action dev="yoavs" type="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).
-      </action>
-      <action dev="dirkv " type="fix" issue="DBCP-20" due-to="Chris Nappin">
-        Per-user pooling with Oracle driver and default isolation settings.
-      </action>
-      <action dev="dirkv " type="fix" issue="DBCP-9" due-to="Adrian Baker">
-        Error in JOCL document in javadoc.
-      </action>
-      <action dev="sullis" type="update">
-        Added toString() method to DelegatingConnection.
-      </action>
-      <action dev="dirkv " type="update" issue="DBCP-181" due-to="Meikel Bisping">
-        Add DriverManager.invalidateConnection().
-      </action>
-      <action dev="dirkv " type="fix" issue="DBCP-184" due-to="Meikel Bisping">
-        Improved Exception nesting in ConnectionPool.
-      </action>
-      <action dev="dennisl" type="fix" issue="DBCP-144" due-to="Sebb">
-        Fix broken website links for examples.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-28"
-        due-to="Huw Lewis, James Ring">
-        Modified PoolableConnection close method to invalidate instance
-        when invoked on an already closed connection.
-      </action>
-      <action dev="joehni" type="fix" issue="DBCP-81">
-        Inserted null checks to avoid NPE in close operations.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-105"
-        due-to="Sandy McArthur, Thomas Fischer">
-        Changed getReference method in InstanceKeyDataSource to return a
-        concrete factory and added implementations of getReference in concrete
-        subclasses.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-39" due-to="Jindrich Vimr">
-        Inserted null check in close method of SharedPoolDataSource to avoid
-        NPE when invoked on non-initialized pool.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-71" due-to="Douglas Squirrel">
-        Document fact that true values for testOnBorrow, testOnReturn, testWhileIdle
-        only have effect when validationQuery is set to a non-null string.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-102">
-        Modified activateObject in PoolableConnection to test connection
-        properties before resetting to defaults.
-      </action>
-      <action dev="sandymac" type="fix" issue="DBCP-188">
-        Corrected maxActive documentation in configuration.html.
-      </action>
-      <action dev="psteitz"  type="update">
-        Upgraded dependency to Pool 1.3.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-187" due-to="Ralf Hauser">
-        Added connection info to SQLException messages when closed connections
-        (resp stmts) are accessed in DelegatingConnection, DelegatingStatement.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-41" due-to="Anton Tagunov">
-        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.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-100">
-        Made userKeys an instance variable (i.e., not static)
-        in SharedPoolDataSource.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-198">
-        Changed implementation of equals in
-        PoolingDataSource.PoolGuardConnectionWrapper
-        to ensure it is reflexive, even when wrapped connections are not
-        DelegatingConnections.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-116" due-to="Thomas Fischer">
-        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.
-      </action>
-      <action dev="psteitz" type="update" issue="DBCP-68">
-        Removed dependency on Commons Collections by adding collections
-        2.1 sources for LRUMap and SequencedHashMap with package scope to
-        datasources package.
-      </action>
-      <action dev="psteitz" type="fix" issue="DBCP-65">
-        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.
-      </action>
-    </release>
-
-    <release version="1.2.1" date="2004-06-12" description="Maintenance Release to restore JDK 1.3 compatibility">
-      <action type="fix">
-        See &lt;a href="release-notes-1.2.1.html"&gt;DBCP 1.2.1 Release Notes&lt;/a&gt; for details.
-      </action>
-    </release>
-
-    <release version="1.2" date="2004-06-07">
-      <action type="update">
-        See &lt;a href="release-notes-1.2.html"&gt;DBCP 1.2 Release Notes&lt;/a&gt; for details.
-      </action>
-    </release>
-
-    <release version="1.1" date="2003-10-20">
-      <action type="update">
-        See &lt;a href="release-notes-1.1.html"&gt;DBCP 1.1 Release Notes&lt;/a&gt; for details.
-      </action>
-    </release>
-
-   <release version="1.0" date="2002-08-12" description="Initial Release">
-      <action type="add">
-        Initial Release
-      </action>
-    </release>
-
-  </body>
-</document>
+<?xml version="1.0"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+
+<!--
+This file is used by the maven-changes-plugin to generate the release notes.
+Useful ways of finding items to add to this file are:
+
+1.  Add items when you fix a bug or add a feature (this makes the
+release process easy :-).
+
+2.  Do a bugzilla search for tickets closed since the previous release.
+
+3.  Use the report generated by the maven-changelog-plugin to see all
+SVN commits.  Set the project.properties' maven.changelog.range
+property to the number of days since the last release.
+
+To generate the release notes from this file:
+
+mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
+
+then tweak the formatting if necessary
+and commit
+
+The <action> type attribute can be add,update,fix,remove.
+-->
+
+<document>
+  <properties>
+    <title>Apache Commons DBCP Release Notes</title>
+  </properties>
+    <!-- NOTE:
+    The description below is specially formatted so as to improve the layout of the generated release notes:
+    The parsing process removes all line feeds, replacing them with a single space.
+    The Velocity template in src/changes has been enhanced to replace pairs of adjacent spaces
+    with a new-line in the release notes. (These spaces are ignored when displaying HTML).
+    If the output is not quite correct, check for invisible trailing spaces!
+
+    N.B. The release notes template groups actions by type, and only extracts data for the current release.
+    The changes report outputs actions in the order they appear in this file.
+
+    To regenerate the release notes:
+    mvn changes:announcement-generate -Prelease-notes [-Dchanges.version=nnn]
+
+    Defining changes.version allows one to create the RN without first removing the SNAPSHOT suffix.
+    EvictionTimer
+     -->
+  <body>
+    <release version="2.10.0" date="2021-MM-DD" description="This is a minor release, including bug fixes and enhancements.">
+      <!-- FIX -->
+      <action dev="ggregory" type="fix" due-to="newnewcoder, Gary Gregory">
+        Fix StackOverflowError in PoolableConnection.isDisconnectionSqlException #123.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        PerUserPoolDataSourceFactory.getNewInstance(Reference) parsed defaultMaxWaitMillis as an int instead of a long.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Reimplement time tracking in AbandonedTrace with an Instant instead of a long.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Migrate away from deprecated APIs in Apache Commons Pool.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Fix possible NullPointerException in BasicDataSourceFactory.validatePropertyNames().
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Fix possible NullPointerException in BasicDataSourceFactory.getObjectInstance().
+      </action>
+      <action dev="ggregory" type="fix" due-to="Kurtcebe Eroglu, Gary Gregory, Phil Steitz" issue="DBCP-585">
+        Connection level JMX queries result in concurrent access to connection objects, causing errors #179
+      </action>
+      <!-- ADDS -->
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and use AbandonedTrace#setLastUsed(Instant).
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        - Add and use Duration versions of now deprecated APIs that use ints and longs. 
+        - Internally track durations with Duration objects instead of ints and longs.
+        - See the JApiCmp report for the complete list.
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add github/codeql-action.
+      </action>
+      <!-- UPDATES -->
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump actions/checkout from 2.3.4 to 3 #139, #143, #173.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
+        Bump actions/cache from 2.1.6 to 3.0.3 #147, #176.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Bump actions/setup-java from 2 to 3.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump checkstyle from 8.44 to 9.3 #121, #130, #149, #158, #190.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
+        Bump commons-pool2 2.10.0 to 2.11.1.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump junit-jupiter from 5.8.0-M1 to 5.8.2 #125, #136, #157.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump spotbugs from 4.3.0 to 4.7.0 #124, #133, #151, #164, #177, #189.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
+        Bump org.mockito:mockito-core 3.11.2 -> 4.5.1, #128, #138, #152, #175, #188.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump maven-javadoc-plugin from 3.3.0 to 3.4.0 #131, #184.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump maven-pmd-plugin from 3.14.0 to 3.16.0 #132, #172.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump narayana-jta from 5.12.0.Final to 5.12.6.Final #134, #156, #163, #185.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump japicmp-maven-plugin from 0.15.3 to 0.15.7 #137, #166, #174.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump spotbugs-maven-plugin from 4.3.0 to 4.6.0.0 #140, #154, #161, #178.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
+        Bump h2 from 1.4.200 to 2.0.212 #153, #183.
+        Update SQL for migration from H2 1.4.200 to 2.0.204 where "KEY" and "VALUE" are now reserved keywords.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump jboss-logging from 3.4.2.Final to 3.4.3.Final #162.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump slf4j-simple from 1.7.30 to 1.7.36 #169.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump commons-parent from 52 to 53 #180.
+      </action>
+    </release>
+    <release version="2.9.0" date="2021-07-30" description="This is a minor release, including bug fixes and enhancements.">
+      <!-- ADDS -->
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse Constants.KEY_USER and Constants.KEY_PASSWORD.
+      </action>
+      <action dev="ggregory" type="add" due-to="Frank Gasdorf, Gary Gregory">
+        Add and reuse DataSourceMXBean.
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse DriverAdapterCPDS.{get|set}DurationBetweenEvictionRuns(), deprecate {get|set}TimeBetweenEvictionRunsMillis(long).
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse DriverAdapterCPDS.{get|set}MinEvictableIdleDuration(), deprecate {get|set}MinEvictableIdleTimeMillis(int).
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse CPDSConnectionFactory.setMaxConnLifetime(Duration), deprecate setMaxConnLifetimeMillis(long).
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse KeyedCPDSConnectionFactory.setMaxConnLifetime(Duration), deprecate setMaxConnLifetimeMillis(long).
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse KeyedCPDSConnectionFactory.setMaxConnLifetime(Duration), deprecate setMaxConnLifetimeMillis(long).
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add and reuse InstanceKeyDataSource.{get|set}DefaultMaxWait(Duration), deprecate {get|set}DefaultMaxWaitMillis(long).
+      </action>
+      <!--  FIXES -->
+      <action dev="ggregory" type="fix" issue="DBCP-569" due-to="Florent Guillaume">
+        Fix test random failure on TestSynchronizationOrder.testInterposedSynchronization, #84.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-568" due-to="Florent Guillaume">
+        ManagedConnection must clear its cached state after transaction completes, #75.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Arturo Bernal">
+        Minor Improvements #78.
+      </action>
+      <action issue="DBCP-567" dev="ggregory" type="fix" due-to="Phil Steitz, Gary Gregory, Phil Steitz, Romain Manni-Bucau">
+        Use abort rather than close to clean up abandoned connections.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory, DaGeRe">
+        Performance Enhancement: Call toArray with Zero Array Size #20.
+      </action>
+      <action issue="DBCP-562" dev="ggregory" type="fix" due-to="Frank Gasdorf, Gary Gregory">
+        Avoid exposing password via JMX #38.
+      </action>
+      <action issue="DBCP-575" dev="ggregory" type="fix" due-to="Arturo Bernal">
+        Remove redundant initializers #98.
+      </action>
+      <action issue="DBCP-577" dev="ggregory" type="fix" due-to="Arturo Bernal">
+        Simplify test assertions #100, #113. 
+      </action>
+      <action issue="DBCP-573" dev="ggregory" type="fix" due-to="Réda Housni Alaoui, Gary Gregory">
+        DataSource implementations do not implement Wrapper interface correctly #93.
+      </action>
+      <action dev="ggregory" type="fix">
+        Replace FindBugs with SpotBugs.
+      </action>
+      <action dev="ggregory" type="fix">
+        DataSourceConnectionFactory.getUserPassword() may expose internal representation by returning DataSourceConnectionFactory.userPassword.
+      </action>
+      <action dev="ggregory" type="fix">
+        DataSourceXAConnectionFactory.getUserPassword() may expose internal representation by returning DataSourceXAConnectionFactory.userPassword.
+      </action>
+      <action dev="ggregory" type="fix">
+        DriverAdapterCPDS.getPasswordCharArray() may expose internal representation by returning DriverAdapterCPDS.userPassword.
+      </action>
+      <action dev="ggregory" type="fix">
+        new org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory(TransactionManager, XADataSource, String, char[], TransactionSynchronizationRegistry) may expose internal representation by storing an externally mutable object into DataSourceXAConnectionFactory.userPassword.
+      </action>
+      <action dev="ggregory" type="fix">
+        org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory.setPassword(char[]) may expose internal representation by storing an externally mutable object into DataSourceXAConnectionFactory.userPassword.
+      </action>
+      <action dev="ggregory" type="fix">
+        org.apache.commons.dbcp2.PStmtKey.getColumnIndexes() may expose internal representation by returning PStmtKey.columnIndexes.
+      </action>
+      <action dev="ggregory" type="fix">
+        org.apache.commons.dbcp2.PStmtKey.getColumnNames() may expose internal representation by returning PStmtKey.columnNames.
+      </action>
+      <action issue="DBCP-578" dev="ggregory" type="fix" due-to="Arturo Bernal">
+        Use Collections.synchronizedList() Instead Of Vector #101.
+      </action>
+      <action issue="DBCP-576" dev="ggregory" type="fix" due-to="Arturo Bernal">
+        Simplify and inline variables #99.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Update PoolKey#toString() to avoid revealing a user name is here.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        Internal package private UserPassKey class stores its user name as a char[] as it already does the password.
+      </action>
+      <action issue="DBCP-579" dev="ggregory" type="fix" due-to="Shaktisinh Jhala, Gary Gregory">
+		Performance of DelegatingConnection.prepareStatement(String) regressed enormously in 2.8.0 compared to 1.4.
+        DelegatingConnection should also cache connection schema string to avoid calling the Connection#getSchema() for each key creation.
+        DelegatingConnection should also cache connection catalog string to avoid calling the Connection#getCatalog() for each key creation.
+      </action>
+      <action dev="ggregory" type="fix" due-to="Gary Gregory">
+        BasicDataSource should test for the presence of a security manager dynamically, not once on initialization.
+      </action>
+      <!-- UPDATES -->
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump mockito-core from 3.5.11 to 3.11.2 #66, #72, #77, #85, #91, #105, #110, #116.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump actions/checkout from v2.3.2 to v2.3.4 #65, #74.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump actions/cache from v2 to v2.1.6 #90, #108.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump commons-pool2 from 2.8.1 to 2.9.0.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
+        Bump actions/setup-java from v1.4.2 to v2 #69.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
+        Bump japicmp-maven-plugin from 0.14.3 to 0.15.2 #71, #82.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Bump maven-pmd-plugin from 3.13.0 to 3.14.0 #76.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot, Gary Gregory">
+        Bump japicmp-maven-plugin from 0.14.4 to 0.15.3, #83.
+      </action>
+      <action dev="ggregory" type="update" due-to="John Patrick">
+        Bump Hamcrest 1.3 -> 2.2 #70.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump maven-checkstyle-plugin from 3.1.1 to 3.1.2 #88.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump junit-jupiter from 5.7.0 to 5.8.0-M1, #89, #106.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump narayana-jta from 5.10.6.Final to 5.12.0.Final #103, #111.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump maven-javadoc-plugin from 3.2.0 to 3.3.0 #107.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump commons.jacoco.version 0.8.6 -> 0.8.7.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump jboss-logging from 3.4.1.Final to 3.4.2.Final #109.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump org.jboss:jboss-transaction-spi from 7.6.0.Final to 7.6.1.Final.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump commons-pool2 from 2.9.0 to 2.10.0.
+      </action>
+      <action type="update" dev="ggregory" due-to="Gary Gregory">
+        Bump checkstyle to 8.44.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump spotbugs from 4.2.3 to 4.3.0 #117.
+      </action>
+      <action type="update" dev="ggregory" due-to="Dependabot">
+        Bump spotbugs-maven-plugin from 4.2.3 to 4.3.0 #118.
+      </action>
+    </release>
+    <release version="2.8.0" date="2020-09-21" description="This is a minor release, including bug fixes and enhancements.">
+      <!-- add -->
+      <action dev="ggregory" type="add" issue="DBCP-564" due-to="Florent Guillaume">
+        Fix BasicManagedDataSource leak of connections opened after transaction is rollback-only #39.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-566" due-to="Robert Paschek, Gary Gregory, Phil Steitz">
+        Add clearStatementPoolOnReturn #42.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-559" due-to="Phil Steitz">
+        Add start, restart methods to BasicDataSource. #50.
+      </action>
+      <!-- fix -->
+      <action dev="ggregory" type="fix" issue="DBCP-555" due-to="Gary Gregory">
+        NPE when creating a SQLExceptionList with a null list.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-558" due-to="louislatreille">
+        Fix DelegatingConnection readOnly and autoCommit caching mechanism #35.
+      </action>
+      <action dev="markt" type="fix" due-to="Sebastian Haas">
+        Fix regression introduced by unreleased code clean-up #63.
+      </action>
+      <action dev="ggregory" type="update" due-to="DoiMasayuki, Alexander Norz, Gary Gregory">
+        Update to PR#36 - PrepareStatement and prepareCall methods are extracted #37.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Do not display credentials in DriverAdapterCPDS.toString().
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Do not display credentials in DelegatingConnection.toString().
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Do not display credentials in DriverConnectionFactory.toString().
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Do not display credentials in PoolKey.toString().
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Do not display credentials in UserPassKey.toString().
+      </action>
+      <!-- UPDATES -->
+      <action dev="ggregory" type="update" issue="DBCP-650" due-to="Gary Gregory, Dependabot">
+        Update Apache Commons Pool from 2.7.0 to 2.8.1, #48.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from H2 1.4.199 to 1.4.200.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory, Dependabot">
+        Update tests from Mockito 3.0.0 to 3.5.11 #47, #60, #64.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from jboss-logging 3.4.0.Final to 3.4.1.Final.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from narayana-jta 5.9.5.Final to 5.10.6.Final, #61.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from junit-jupiter 5.5.1 to 5.7.0 #62.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.slf4j:slf4j-simple 1.7.26 to 1.7.30.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update build from com.github.siom79.japicmp:japicmp-maven-plugin 0.13.1 to 0.14.3.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update build from maven-javadoc-plugin 3.1.1 to 3.2.0.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update build from maven-pmd-plugin 3.12.0 to 3.13.0.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update org.apache.commons:commons-parent from 48 to 51.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update jacoco-maven-plugin from 0.8.4 to 0.8.6.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update maven-checkstyle-plugin from 3.0.0 to 3.1.1.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Update actions/checkout from v1 to v2.3.2, #44, #51.
+      </action>
+      <action dev="ggregory" type="update" due-to="Dependabot">
+        Update actions/setup-java from v1.4.0 to v1.4.2 #58.
+      </action>
+    </release>
+    <release version="2.7.0" date="2019-07-31" description="This is a minor release, including bug fixes and enhancements.">
+      <!-- add -->
+      <action dev="jleroux" type="add" issue="DBCP-539" due-to="Jacques Le Roux">
+        ManagedDataSource#close() should declare used exceptions.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-547" due-to="leechoongyon, Gary Gregory">
+        Add a ConnectionFactory class name setting for BasicDataSource.createConnectionFactory() #33.
+      </action>
+      <action dev="ggregory" type="add" due-to="Gary Gregory">
+        Add missing Javadocs.
+      </action>
+      <!-- fix -->
+      <action dev="ggregory" type="fix" issue="DBCP-538" due-to="Ragnar Haugan, Gary Gregory">
+        Wrong JMX base name derived in BasicDataSource#updateJmxName.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-546" due-to="Sergey Chupov">
+        Avoid NPE when calling DriverAdapterCPDS.toString().
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-550" due-to="Gary Gregory">
+        java.util.IllegalFormatException while building a message for a SQLFeatureNotSupportedException in Jdbc41Bridge.getObject(ResultSet,String,Class).
+      </action>
+      <action dev="ggregory" type="fix" due-to="LichKing-lee">
+        Fix Javadoc link in README.md #21.
+      </action>      
+      <!-- update -->
+      <action dev="ggregory" type="update" issue="DBCP-540" due-to="emopers">
+        Close ObjectOutputStream before calling toByteArray() on underlying ByteArrayOutputStream #28.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-541" due-to="Allon Murienik">
+        Upgrade to JUnit Jupiter #19.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-542" due-to="Zheng Feng, Gary Gregory">
+        Fix tests on Java 11.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-543" due-to="Gary Gregory">
+        Update Apache Commons Pool from 2.6.1 to 2.6.2.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-529" due-to="Yuri">
+        Add 'jmxName' property to web configuration parameters listing.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-548" due-to="Gary Gregory">
+        Update Apache Commons Pool from 2.6.2 to 2.7.0.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-549" due-to="Gary Gregory">
+        Make org.apache.commons.dbcp2.AbandonedTrace.removeTrace(AbandonedTrace) null-safe.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-551" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.DelegatingStatement.close() should try to close ALL of its result sets even when an exception occurs.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-552" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.DelegatingConnection.passivate() should close ALL of its resources even when an exception occurs.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-553" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.PoolablePreparedStatement.passivate() should close ALL of its resources even when an exception occurs.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-554" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.PoolableCallableStatement.passivate() should close ALL of its resources even when an exception occurs.
+      </action>
+      <!-- update, no Jira -->     
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.mockito:mockito-core 2.28.2 to 3.0.0.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from H2 1.4.198 to 1.4.199.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from com.h2database:h2 1.4.197 to 1.4.199.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.jboss.narayana.jta:narayana-jta 5.9.2.Final to 5.9.5.Final.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.jboss.logging:jboss-logging 3.3.2.Final to 3.4.0.Final.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.mockito:mockito-core 2.24.0 to 2.28.2.
+      </action>
+      <action dev="ggregory" type="update" due-to="Gary Gregory">
+        Update tests from org.mockito:mockito-core 2.28.2 to 3.0.0.
+      </action>
+    </release>
+    <release version="2.6.0" date="2019-02-14" description="This is a minor release, including bug fixes and enhancements.">
+      <action dev="chtompki" type="add" issue="DBCP-534" due-to="Peter Wicks">
+        Allow for manual connection eviction.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-514" due-to="Tom Jenkinson, Gary Gregory">
+        Allow DBCP to register with a TransactionSynchronizationRegistry for XA cases.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-517" due-to="Gary Gregory">
+        Make defensive copies of char[] passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-515" due-to="Tom Jenkinson, Gary Gregory">
+        Do not try to register synchronization when the transaction is no longer active.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-516" due-to="Tom Jenkinson, Gary Gregory">
+        Do not double returnObject back to the pool if there is a transaction context with a shared connection.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-518" due-to="Gary Gregory">
+        Allow DBCP to work with old Java 6/JDBC drivers without throwing AbstractMethodError.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-519" due-to="Gary Gregory">
+        Add some toString() methods for debugging (never printing passwords.)
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-520" due-to="Zheng Feng">
+        BasicManagedDataSource needs to pass the TSR with creating DataSourceXAConnectionFactory.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-527" due-to="Gary Gregory">
+        Add getters to some classes.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-528" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.DriverManagerConnectionFactory should use a char[] instead of a String to store passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-537" due-to="Gary Gregory">
+        Update Apache Commons Pool from 2.6.0 to 2.6.1.
+      </action>
+    </release>
+    <release version="2.5.0" date="2018-07-15" description="This is a minor release, including bug fixes and enhancements.">
+      <action dev="ggregory" type="update" issue="DBCP-505" due-to="Gary Gregory">
+        Update Java requirement from version 7 to 8.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-506" due-to="Gary Gregory">
+        Support JDBC 4.2.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-479" due-to="Guillaume Husta, Gary Gregory">
+        Support default schema in configuration.
+      </action>
+       <action dev="ggregory" type="update" issue="DBCP-427" due-to="Vladimir Konkov, Phil Steitz, Gary Gregory">
+        Examines 'SQLException's thrown by underlying connections or statements for fatal (disconnection) errors.
+      </action>
+       <action dev="ggregory" type="update" issue="DBCP-507" due-to="Vladimir Konkov, Phil Steitz, Gary Gregory">
+        Change default for fail-fast connections from false to true.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-508" due-to="Gary Gregory">
+        Prepared statement keys should take a Connection's schema into account.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-504" due-to="Bruno P. Kinoshita">
+        Increase test coverage.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-510" due-to="Gary Gregory">
+        Update Apache Commons Pool from 2.5.0 to 2.6.0.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-512" due-to="Gary Gregory">
+        Avoid exceptions when closing a connection in mutli-threaded use case.
+      </action>
+    </release>
+    <release version="2.4.0" date="2018-06-12" description="This is a minor release, including bug fixes and enhancements.">
+      <action dev="ggregory" type="fix" issue="DBCP-484" due-to="Emanuel Freitas">
+        Connection leak during XATransaction in high load.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-492" due-to="Gary Gregory">
+        Drop Ant build.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-491" due-to="Zheng Feng, Gary Gregory">
+        Ensure DBCP ConnectionListener can deal with transaction managers which invoke rollback in a separate thread.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-494" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.PStmtKey should make copies of given arrays in constructors.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-495" due-to="Gary Gregory">
+        Remove duplicate code in org.apache.commons.dbcp2.cpdsadapter.PStmtKeyCPDS.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-496" due-to="Gary Gregory">
+        Add support for pooling CallableStatements to the org.apache.commons.dbcp2.cpdsadapter package.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-497" due-to="Gary Gregory">
+        Deprecate use of PStmtKeyCPDS in favor of PStmtKey.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-498" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.DataSourceConnectionFactory should use a char[] instead of a String to store passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-499" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.managed.DataSourceXAConnectionFactory should use a char[] instead of a String to store passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-500" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS should use a char[] instead of a String to store passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-501" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.datasources.CPDSConnectionFactory should use a char[] instead of a String to store passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-502" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.datasources internals should use a char[] instead of a String to store passwords.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-503" due-to="Gary Gregory">
+        org.apache.commons.dbcp2.datasources.InstanceKeyDataSourceFactory.closeAll() does not close all.
+      </action>
+    </release>
+    <release version="2.3.0" date="2018-05-12" description="This is a minor release, including bug fixes and enhancements.">
+      <action dev="pschumacher" type="fix" issue="DBCP-476" due-to="Gary Evesson, Richard Cordova">
+        AbandonedTrace.getTrace() contains race condition.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-482" due-to="Dennis Lloyd, Gary Gregory">
+        Avoid javax.management.InstanceNotFoundException on shutdown when a bean is not registered. Closes #9.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-483" due-to="Gary Gregory">
+        Make constant public: org.apache.commons.dbcp2.PoolingDriver.URL_PREFIX.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-486" due-to="Gary Gregory">
+        DriverAdapterCPDS.setUser(), setPassword(), and getPooledConnection() with null arguments throw NullPointerExceptions when connection properties are set.
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-487" due-to="Gary Gregory">
+        Add API org.apache.commons.dbcp2.datasources.PerUserPoolDataSource.clear().
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-488" due-to="Gary Gregory">
+        NPE for org.apache.commons.dbcp2.cpdsadapter.DriverAdapterCPDS.setConnectionProperties(null).
+      </action>
+      <action dev="ggregory" type="update" issue="DBCP-490" due-to="Gary Gregory">
+        The method org.apache.commons.dbcp2.PoolingDriver.getConnectionPool(String) does not tell you which pool name is not registered when it throws an exception.
+      </action>
+    </release>
+    <release version="2.2.0" date="2017-12-27" description="This is a minor release, including bug fixes and enhancements.">
+      <action dev="ggregory" type="fix" issue="DBCP-481" due-to="Gary Gregory">
+        Update Apache Commons Pool from 2.4.2 to 2.5.0.
+      </action>
+      <action dev="mattsicker" type="fix" issue="DBCP-454" due-to="Philipp Marx, Matt Sicker">
+        OSGi declarations contain multiple import headers for javax.transaction.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-478" due-to="nicola mele">
+        Wrong parameter name in site documentation for BasicDataSource Configuration Parameters.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-452">
+        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.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-446" due-to="Gary Gregory, feng yang, Euclides M, Phil Steitz">
+        NullPointerException thrown when calling ManagedConnection.isClosed().
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-444">
+        InvalidateConnection can result in closed connection returned by getConnection.
+      </action>
+      <action dev="ggregory" type="fix" issue="DBCP-449" due-to="Grzegorz D.">
+        Complete the fix for DBCP-418, enabling PoolableConnection class to load in environments
+        (such as GAE) where the JMX ManagementFactory is not available.
+      </action>
+      <action dev="ggregory" type="add" issue="DBCP-451">
+        Add constructor DriverManagerConnectionFactory(String).
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-455" due-to="Kyohei Nakamura">
+        Ensure that the cacheState setting is used when statement pooling is
+        disabled.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-453" due-to="Philipp Marx">
+        Ensure that setSoftMinEvictableIdleTimeMillis is used when working with
+        BasicDataSource.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-456" due-to="Kyohei Nakamura">
+        Correct the name of the configuration attribute
+        softMinEvictableIdleTimeMillis.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-472">
+        Avoid potential infinite loops when checking if an SQLException is fatal
+        for a connection or not.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-468">
+        Expand the fail-fast for fatal connection errors feature to include
+        managed connections.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-463">
+        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.
+      </action>
+       <action dev="markt" type="add" issue="DBCP-462" due-to="Keiichi Fujino">
+         Refactoring to prepare for a future patch to enable pooling of all
+         prepared and callable statements in PoolingConnection.
+       </action>
+       <action dev="markt" type="fix" issue="DBCP-459">
+         Ensure that a thread's interrupt status is visible to the caller if the
+         thread is interrupted during a call to
+         PoolingDataSource.getConnection().
+       </action>
+       <action dev="markt" type="add" issue="DBCP-458" due-to="Adrian Tarau">
+         Make it simpler to extend BasicDataSource to allow sub-classes to
+         provide custom GenericObjectPool implementations.
+       </action>
+       <action dev="markt" type="fix" issue="DBCP-457">
+         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.
+       </action>
+       <action dev="markt" type="add" issue="DBCP-474" due-to="Keiichi Fujino">
+         Enable pooling of all prepared and callable statements
+         inPoolingConnection.
+       </action>
+    </release>
+    <release version="2.1.1" date="6 Aug 2015" description=
+"This is a patch release, including bug fixes only.">
+      <action dev="psteitz" type="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.
+      </action>
+      <action issue="DBCP-441" dev="psteitz" type="fix">
+        Added BasicDataSource abandonedUsageTracking property missing from BasicDataSourceFactory.
+      </action>
+      <action issue="DBCP-442" dev="psteitz" type="fix">
+        SharedPoolDataSource getConnection fails when testOnBorrow is set with
+        a null validation query.
+      </action>
+      <action issue="DBCP-438" dev="psteitz" type="fix" due-to="Raihan Kibria">
+        Nested connections in a transaction (local) throws null pointer.
+      </action>
+      <action issue="DBCP-437" dev="psteitz" type="fix">
+        BasicDataSource does not set disconnectionSql properties on its PoolableConnectionFactory.
+      </action>
+    </release>
+    <release version="2.1" date="23 Feb 2015" description=
+ "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.
+      ">
+      <action issue="DBCP-420" dev="sebb" type="fix">
+        InstanceKeyDataSource discards native SQLException when given password does not match
+        password used to create the connection.
+      </action>
+      <action issue="DBCP-422" dev="ggregory" type="update">
+        Update Apache Commons Logging to 1.2 from 1.1.3.
+      </action>
+      <action dev="markt" type="fix">
+        Correct some Javadoc references to Apache Commons Pool 2 classes that
+        have changed names since Pool 1.x.
+      </action>
+      <action dev="markt" type="fix">
+        Do not ignore the configured custom eviction policy when creating a
+        BasicDataSource.
+      </action>
+      <action dev="psteitz" type="add" issue="DBCP-426" due-to="Kasper Sørensen">
+        Added invalidateConnection method to BasicDataSource.
+      </action>
+      <action issue="DBCP-428" dev="psteitz" type="fix" due-to="Vladimir Konkov">
+        Unsuccessful Connection enlistment in XA Transaction ignored by TransactionContext.
+      </action>
+      <action issue="DBCP-424" dev="psteitz" type="update">
+        Made expired connection logging configurable in BasicDataSource.  Setting
+        logExpiredConnections to false suppresses expired connection log messages.
+      </action>
+      <action issue="DBCP-423" dev="psteitz" type="update">
+        Made Datasources implement AutoCloseable.
+      </action>
+      <action issue="DBCP-427" dev="psteitz" type="add" due-to="Vladimir Konkov">
+        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).
+      </action>
+      <action issue="DBCP-432" dev="psteitz" type="fix">
+        Changed BasicDataSource createDataSource method to ensure that initialization
+        completes before clients get reference to newly created instances.
+      </action>
+      <action issue="DBCP-433" dev="psteitz" type="fix" due-to="Vladimir Konkov">
+        Fixed connection leak when SQLException is thrown while enlisting an XA
+        transaction.
+      </action>
+      <action issue="DBCP-434" dev="psteitz" type="fix">
+        Setting jmxName to null should suppress JMX registration of connection
+        and statement pools.
+      </action>
+      <action dev="psteitz" type="update">
+        Eliminated synchronization in BasicDataSource getNumActive, getNumIdle methods.
+      </action>
+      <action issue="DBCP-435" type="update" due-to="Denixx Baykin">
+        Added property name verification to BasicDataSourceFactory. References including
+        obsolete or unrecognized properties now generate log messages.
+      </action>
+    </release>
+    <release version="2.0.1" date="24 May 2014" description="This is a bug fix release.">
+      <action dev="markt" type="fix">
+        Small performance improvements when returning connections to the pool.
+      </action>
+      <action issue="DBCP-414" dev="markt" type="fix" due-to="Pasi Eronen">
+        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.
+      </action>
+      <action issue="DBCP-412" dev="psteitz" type="update">
+        Added check in PoolingDataSource constructor to ensure that the connection factory
+        and pool are properly linked.
+      </action>
+      <action issue="DBCP-417" dev="psteitz" type="fix">
+        Fixed connection leak when managed connections are closed during transactions.
+      </action>
+      <action issue="DBCP-418" dev="psteitz" type="fix">
+        Enable PoolableConnection class to load without JMX.
+      </action>
+    </release>
+    <release version="2.0" date="3 March 2014" description=
+"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.
+      ">
+      <action issue="DBCP-411" dev="sebb" type="fix">
+        BasicManagedDataSource - unregister from JMX on close().
+      </action>
+        <action issue="DBCP-154" dev="markt" type="fix">
+        Log validation failures of poolable connections.
+      </action>
+      <action issue="DBCP-403" dev="sebb" type="fix">
+        DelegatingStatement.close() fails with NPE if statement is null
+      </action>
+      <action issue="DBCP-322" dev="sebb" type="fix">
+        CPDSConnectionFactory.validateObject(Object) ignores Throwable.
+      </action>
+      <action dev="markt" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-300" type="fix">
+        Removed unnecessary synchronisation in BasicDataSource#createDataSource.
+      </action>
+      <action dev="markt" type="update">
+        The Java package name has been changed from org.apache.commons.dbcp to
+        org.apache.commons.dbcp2.
+      </action>
+      <action dev="markt" type="update">
+        Update to Commons Pool 2 (based on java.util.concurrent) to provide
+        pooling functionality.
+      </action>
+      <action dev="markt" type="update">
+        Updated source code for Java 1.6 (added @Override &amp; @Deprecated
+        annotations).
+      </action>
+      <action dev="markt" type="update">
+        Removed JOCL support.
+      </action>
+      <action dev="markt" issue="DBCP-143" type="update">
+        Remove deprecated SQLNestedException.
+      </action>
+      <action dev="markt" issue="DBCP-384" type="fix">
+        Fix threading issues with accessToUnderlyingConnectionAllowed attribute
+        of PoolingDriver which is used to support unit testing.
+      </action>
+      <action dev="markt" issue="DBCP-292" type="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).
+      </action>
+      <action dev="markt" issue="DBCP-376" type="fix" due-to="Dave Oxley">
+        Fix thread safety issues in the SharedPoolDataSource and the
+        PerUserPoolDataSource.
+      </action>
+      <action dev="markt" issue="DBCP-382" type="fix" due-to="Stefan Rempfer">
+        Allow accessToUnderlyingConnectionAllowed to be configured when
+        configuration takes place via JNDI in a JavaEE container.
+      </action>
+      <action dev="markt" issue="DBCP-369" type="fix" due-to="Michael Pradel">
+        Fix threading issue when using multiple instances of the
+        SharedPoolDataSource concurrently.
+      </action>
+      <action dev="markt" issue="DBCP-391" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-404" type="fix">
+        Make all mutable fields private.
+      </action>
+      <action dev="markt" issue="DBCP-364" type="fix">
+        Return BasicDataSource rather than DataSource from
+        BasicDataSourceFactory so a cast is not required to use BasicDataSource
+        specific methods.
+      </action>
+      <action dev="markt" issue="DBCP-358" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-368" type="add">
+        Expose the new Pool 2 property evictionPolicyClassName to enable more
+        sophisticated eviction strategies to be used.
+      </action>
+      <action dev="markt" issue="DBCP-406" type="add" due-to="Steeve Beroard">
+        Add support for pooling PreparedStatements that use auto-generated keys.
+      </action>
+      <action dev="markt" issue="DBCP-180" type="fix">
+        Enable JDBC resources that are no longer referenced by client code to be
+        eligible for garbage collection.
+      </action>
+      <action dev="markt" issue="DBCP-177" type="add">
+        Enable DBCP to work with a SecurityManager such that only DBCP needs to
+        be granted the necessary permissions to communicate with the database.
+      </action>
+      <action dev="markt" issue="DBCP-410" type="fix" due-to="Andreas Sturmlechner">
+        Correct path to Javadoc overview in build.xml.
+      </action>
+      <action dev="markt" issue="DBCP-234" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-219" type="add">
+        Register pooled connections with JMX so that they may be forcibly closed
+        via JMX if required.
+      </action>
+      <action dev="markt" issue="DBCP-373" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-351" type="add">
+        Provide an option to control if autoCommit is always set to true when a
+        connection is returned to the connection pool.
+      </action>
+      <action dev="markt" issue="DBCP-399" type="add">
+        Provide an option to control if rollback is called when a connection is
+        returned to the poll with autoCommit disabled.
+      </action>
+      <action dev="markt" issue="DBCP-340" type="add">
+        Provide an option to set the default query timeout.
+      </action>
+      <action dev="markt" type="fix">
+        Connection.isValid() should not throw an SQLException if the connection
+        is closed.
+      </action>
+      <action dev="markt" issue="DBCP-357" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-249" type="add">
+        Add support for validation testing database connections on creation.
+      </action>
+    </release>
+    <release version="1.5.1" date="not yet released" description="TBD">
+      <action dev="markt" issue="DBCP-400" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-405" type="fix">
+        Avoid multiple calls to Connection.getAutoCommit() in
+        PoolableConnectionFactory.passivateObject() as it could be an expensive
+        call.
+      </action>
+      <action dev="markt" issue="DBCP-392" type="fix">
+        Use one line per statement for methods with multiple statements rather
+        than using a single line.
+      </action>
+      <action dev="markt" issue="DBCP-396" type="fix">
+        Expose all of the AbandonedConfig properties through a BasicDataSource.
+      </action>
+      <action dev="markt" issue="DBCP-380" type="fix" due-to="Balazs Zsoldos">
+        Correct implementation of DelegatingConnection.isWrapperFor() so it
+        works correctly with older JDBC drivers.
+      </action>
+      <action dev="markt" issue="DBCP-347" type="fix" due-to="Robert Poskrobek">
+        Correct implementation of DelegatingStatement.isWrapperFor(). Also fix
+        DelegatingDatabaseMetaData.isWrapperFor() and
+        DelegatingResultSet.isWrapperFor() that had the same problem.
+      </action>
+      <action dev="markt" issue="DBCP-341" type="fix" due-to="Ioannis Canellos">
+        LocalXAConnectionFactory does not properly check if Xid is equal to
+        currentXid when resuming which may result in an XAException.
+      </action>
+      <action dev="markt" issue="DBCP-355" type="fix" due-to="Florent Guillaume">
+        Ensure that the XAConnection is closed when the associated Connection is
+        closed.
+      </action>
+      <action dev="markt" issue="DBCP-398" type="fix">
+        Clarify Jaavdoc for isClosed() method of PoolableConnection.
+      </action>
+      <action dev="markt" issue="DBCP-383" type="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.
+      </action>
+      <action dev="markt" issue="DBCP-372" type="fix">
+        Using batchUpdate() should not invalidate the PreparedStatement when it
+        is returned to the pool.
+      </action>
+      <action dev="markt" issue="DBCP-309" type="fix">
+        Improve documentation for JNDI example using BasicDataSource.
+      </action>
+    </release>
+    <release version="1.4.1" date="not yet released" description="TBD">
+      <action dev="psteitz" issue="DBCP-334" type="update" due-to="Alberto Mozzone">
+        Exposed GenericObjectPool's softMinEvictableIdleTimeMillis property for
+        configuration and use by BasicDataSource.
+      </action>
+      <action dev="psteitz" issue="DBCP-337" type="fix" due-to="Rob Gansevles">
+        Made equals reflexive in DelegatingStatement (and subclasses), DelegatingMetaData,
+        DelegatingResultSet and PoolingDriver#PoolGuardConnectionWrapper.
+      </action>
+      <action dev="psteitz" issue="DBCP-342" type="fix" due-to="Byungchol Kim">
+        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.
+      </action>
+      <action dev="psteitz" issue="DBCP-330" type="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.
+      </action>
+      <action dev="psteitz" issue="DBCP-343" type="fix">
+        Modified execute methods of Statement objects to ensure that whenever
+        a statement is used, the lastUsed property of its parent connection is
+        updated.
+      </action>
+      <action dev="markt" issue="DBCP-333" type="fix">
+        Correctly implemented the option to configure the class loader used to load
+        the JDBC driver.
+      </action>
+      <action dev="psteitz" issue="DBCP-346" type="update" due-to="Ken Tatsushita">
+        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.
+      </action>
+      <action dev="psteitz" issue="DBCP-344" type="fix" due-to="Jeremy Whiting">
+        Test transitive dependencies brought in by geronimo-transaction created
+        version conflicts (commons logging and junit).  These have been explicitly
+        excluded in the POM.
+      </action>
+      <action dev="psteitz" issue="DBCP-348" type="fix" due-to="Eiji Takahashi">
+        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.
+      </action>
+    </release>
+    <release version="1.4" date="2010-02-14" description="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 ">
+      <action dev="psteitz" type="fix" issue="DBCP-320">
+        Eliminated poolKeys cache from PerUserPoolDataSource.
+      </action>
+      <action dev="sebb" type="fix" issue="DBCP-321">
+        Eliminated userKeys LRUMap cache from SharedPoolDataSource.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-319" due-to="Sebastian Bazley">
+        Made private fields final where possible.
+      </action>
+      <action dev="sebb" type="fix" issue="DBCP-318" due-to="Sebastian Bazley">
+        PerUserPoolDataSource.getPooledConnectionAndInfo multi-threading bug.
+      </action>
+      <action dev="sebb" type="fix" issue="DBCP-315" due-to="Sebastian Bazley">
+        Remove throws clause from method that does not throw an exception.
+      </action>
+      <action dev="sebb" type="fix" issue="DBCP-313" due-to="Sebastian Bazley">
+        Remove code that catches and ignores Exceptions when calling
+        PooledConnection.removeConnectionEventListener(ConnectionEventListener)
+        as the method does not throw any Exceptions.
+      </action>
+      <action dev="sebb" type="fix" issue="DBCP-316" due-to="Sebastian Bazley">
+        Remove impossible null check.
+      </action>
+      <action dev="sebb" type="update" issue="DBCP-314" due-to="Sebastian Bazley">
+        Renamed variables with duplicate names in different scopes.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-312" due-to="Glen Mazza">
+        Clarified javadoc for BasicDataSource close() method.
+      </action>
+      <action dev="psteitz" type="add" issue="DBCP-204" due-to="Wei Chen">
+        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.
+      </action>
+      <action dev="markt" type="update" issue="DBCP-305" due-to="Christopher Schultz">
+        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.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-303" due-to="Dave Oxley">
+        Ensure Statement.getGeneratedKeys() works correctly with the CPDS
+        adapter.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-302" due-to="Sebastian Bazley">
+        Removed incorrectly advertised ClassNotFoundException from
+        JOCLContentHandler.ConstructorDetails.createObject().
+      </action>
+      <action dev="markt" type="update" issue="DBCP-203" due-to="Mark Grand">
+        Make the class loader used to load the JDBC driver configurable for the
+        BasicDatasource.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-8">
+        Handle user password changes for InstanceKeyDataSources.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-289" due-to="Marc Kannegießer">
+        Made XADataSource configurable in BasicManagedDataSource.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-294" due-to="Philippe Mouawad">
+        Added PoolableManagedConnection and PoolableManagedConnectionFactory so that
+        pooled managed connections can unregister themselves from transaction registries,
+        avoiding resource leaks.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-276">
+        Added connectionProperties property to DriverAdapterCPDS.
+      </action>
+      <action dev="psteitz" type="add" issue="DBCP-226">
+        Added a validationQueryTimeout configuration parameter to BasicDataSource
+        allowing the user to specify a timeout value (in seconds) for connection
+        validation queries.
+      </action>
+      <action dev="psteitz" type="add" issue="DBCP-175" due-to="Jiri Melichna and Jerome Lacoste">
+        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.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-212">
+        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.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-242">
+        Reverted DelegatingConnection close to 1.2.2 version to ensure
+        open statements are closed before the underlying connection is closed.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-235">
+        Refactor DelegatingConnection and ManagedConnection enable overridden
+        equals() and hashcode() to work correctly.
+      </action>
+      <action dev="markt" type="update" issue="DBCP-265">
+        Add a DelegatingDatabaseMetaData to track ResultSets returned from
+        DatabaseMetaData objects.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-215">
+        Modified BasicDataSourceFactory to complete initialization of the pool
+        by creating initialSize connections rather than leaving this to lazy
+        initialization when the pool is used.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-253">
+        Eliminated masked _stmt field in descendents of DelegatingStatement.
+       </action>
+      <action dev="markt" type="fix" issue="DBCP-191" due-to="Michael Heuer and J. David Beutel" >
+        Modified DBCP sources to support compilation under JDK 1.4-1.6
+        using Ant flags to do conditional compilation.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-272">
+        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.
+      </action>
+      <action dev="markt" type="fix" issue="DBCP-4">
+        Eliminated direct System.out calls in AbandonedTrace.
+      </action>
+      <action dev="niallp" type="fix" issue="DBCP-264">
+        Modified DelegatingStatement close to clear open batches.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-255">
+        Eliminated unused private "parent" field in AbandonedTrace.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-273" due-to="Mark Lin">
+        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.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-271" due-to="Sebastian Bazley">
+        Made private instance fields of AbandonedTrace volatile (parent,
+        createdBy, lastUsed, createdTime) or final (trace).
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-270" due-to="Filip Hanik">
+        Narrowed synchronization in AbandonedTrace to resolve an Evictor deadlock.
+      </action>
+      <action dev="bayard" type="fix" issue="DBCP-218">
+        Corrected Javadoc to state that getLoginTimeout and setLoginTimeout are
+        NOT supported by BasicDataSource.
+      </action>
+      <action dev="bayard" type="update" issue="DBCP-211">
+        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+.
+      </action>
+      <action dev="psteitz" type="add" issue="DBCP-228" due-to="Dain Sundstrom">
+        Added support for pooling managed connections.
+      </action>
+      <action dev="psteitz" type="add" issue="DBCP-230" due-to="Dain Sundstrom">
+        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.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-233" due-to="Dain Sundstrom">
+        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.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-11" due-to="Dain Sundstrom">
+        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().
+      </action>
+      <action dev="dain" type="update" issue="DBCP-143">
+        SQLNestedException has been deprecated and will be replaced in DBCP 2.0 with
+        SQLException and standard Java exception chaining.
+      </action>
+      <action dev="dain" type="fix" issue="DBCP-221">
+        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.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-241">
+        Eliminated potential sources of NullPointerExceptions in
+        PoolingConnection.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-216" due-to="Marcos Sanz">
+        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.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-245" due-to="Michael Drechsel">
+        Fixed error in SharedPoolDataSource causing incorrect passwords to be
+        stored under certain conditions.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-237" due-to="Oliver Matz">
+        Added exception handler to ensure that PooledConnections are not
+        orphaned when an exception occurs in setUpDefaults or clearWarnings in
+        InstanceKeyDataSource.getConnection.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-252" due-to="FindBugs">
+        Made getPool synchronized in PoolableConnectionFactory.
+        Fixes inconsistent synchronization accessing _pool.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-252" due-to="FindBugs">
+        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.
+      </action>
+    </release>
+    <release version="1.3" date="2010-02-14" description="Compatability release for JDBC 3.
+      See version 1.4 description and change log.">
+     <action type="update">
+        See &lt;a href="changes-report.html#a1.4"&gt;DBCP 1.4 Changes &lt;/a&gt; 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.
+      </action>
+    </release>
+    <release version="1.2.2" date="2007-04-04"
+      description="This is a maintenance release containing bug fixes
+      and enhancements. All API changes are binary compatible with version 1.2.1.">
+      <action dev="dirkv " type="add">
+        Add a &lt;i&gt;JNDI How To&lt;/i&gt; to the User Guide.
+      </action>
+      <action dev="dirkv " type="fix" issue="DBCP-108" due-to="Maxwell Grender-Jones">
+        DriverManagerConnectionFactory: blank user name and password handling.
+      </action>
+      <action dev="dirkv " type="fix" issue="DBCP-113" due-to="Rohan Lenard">
+        Broken behaviour for BasicDataSource.setMaxActive(0).
+      </action>
+      <action dev="dirkv " type="fix" issue="DBCP-36" due-to="Jonathan Whitall">
+        BasicDataSource does not work with getConnection(String, String).
+      </action>
+      <action dev="dirkv " type="update" issue="DBCP-164" due-to="Todd Carmichael">
+        Enhancements to prepared statement in DriverAdapterCPDS.
+      </action>
+      <action dev="yoavs" type="update" issue="DBCP-186" due-to="Ralf Hauser">
+        Better messages and docs for LoginTimeout UnsupportedOperationException.
+      </action>
+      <action dev="yoavs" type="fix" issue="DBCP-50" due-to="Nicky Nicolson">
+        Error in JOCL snippet in org.apache.commons.dbcp package javadoc.
+      </action>
+      <action dev="yoavs" type="update" issue="DBCP-165" due-to="QM">
+        Added toString() methods to DelegatingPreparedStatement and DelegatingStatement
+      </action>
+      <action dev="yoavs" type="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).
+      </action>
+      <action dev="dirkv " type="fix" issue="DBCP-20" due-to="Chris Nappin">
+        Per-user pooling with Oracle driver and default isolation settings.
+      </action>
+      <action dev="dirkv " type="fix" issue="DBCP-9" due-to="Adrian Baker">
+        Error in JOCL document in javadoc.
+      </action>
+      <action dev="sullis" type="update">
+        Added toString() method to DelegatingConnection.
+      </action>
+      <action dev="dirkv " type="update" issue="DBCP-181" due-to="Meikel Bisping">
+        Add DriverManager.invalidateConnection().
+      </action>
+      <action dev="dirkv " type="fix" issue="DBCP-184" due-to="Meikel Bisping">
+        Improved Exception nesting in ConnectionPool.
+      </action>
+      <action dev="dennisl" type="fix" issue="DBCP-144" due-to="Sebb">
+        Fix broken website links for examples.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-28"
+        due-to="Huw Lewis, James Ring">
+        Modified PoolableConnection close method to invalidate instance
+        when invoked on an already closed connection.
+      </action>
+      <action dev="joehni" type="fix" issue="DBCP-81">
+        Inserted null checks to avoid NPE in close operations.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-105"
+        due-to="Sandy McArthur, Thomas Fischer">
+        Changed getReference method in InstanceKeyDataSource to return a
+        concrete factory and added implementations of getReference in concrete
+        subclasses.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-39" due-to="Jindrich Vimr">
+        Inserted null check in close method of SharedPoolDataSource to avoid
+        NPE when invoked on non-initialized pool.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-71" due-to="Douglas Squirrel">
+        Document fact that true values for testOnBorrow, testOnReturn, testWhileIdle
+        only have effect when validationQuery is set to a non-null string.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-102">
+        Modified activateObject in PoolableConnection to test connection
+        properties before resetting to defaults.
+      </action>
+      <action dev="sandymac" type="fix" issue="DBCP-188">
+        Corrected maxActive documentation in configuration.html.
+      </action>
+      <action dev="psteitz"  type="update">
+        Upgraded dependency to Pool 1.3.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-187" due-to="Ralf Hauser">
+        Added connection info to SQLException messages when closed connections
+        (resp stmts) are accessed in DelegatingConnection, DelegatingStatement.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-41" due-to="Anton Tagunov">
+        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.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-100">
+        Made userKeys an instance variable (i.e., not static)
+        in SharedPoolDataSource.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-198">
+        Changed implementation of equals in
+        PoolingDataSource.PoolGuardConnectionWrapper
+        to ensure it is reflexive, even when wrapped connections are not
+        DelegatingConnections.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-116" due-to="Thomas Fischer">
+        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.
+      </action>
+      <action dev="psteitz" type="update" issue="DBCP-68">
+        Removed dependency on Commons Collections by adding collections
+        2.1 sources for LRUMap and SequencedHashMap with package scope to
+        datasources package.
+      </action>
+      <action dev="psteitz" type="fix" issue="DBCP-65">
+        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.
+      </action>
+    </release>
+
+    <release version="1.2.1" date="2004-06-12" description="Maintenance Release to restore JDK 1.3 compatibility">
+      <action type="fix">
+        See &lt;a href="release-notes-1.2.1.html"&gt;DBCP 1.2.1 Release Notes&lt;/a&gt; for details.
+      </action>
+    </release>
+
+    <release version="1.2" date="2004-06-07">
+      <action type="update">
+        See &lt;a href="release-notes-1.2.html"&gt;DBCP 1.2 Release Notes&lt;/a&gt; for details.
+      </action>
+    </release>
+
+    <release version="1.1" date="2003-10-20">
+      <action type="update">
+        See &lt;a href="release-notes-1.1.html"&gt;DBCP 1.1 Release Notes&lt;/a&gt; for details.
+      </action>
+    </release>
+
+   <release version="1.0" date="2002-08-12" description="Initial Release">
+      <action type="add">
+        Initial Release
+      </action>
+    </release>
+
+  </body>
+</document>