Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
-
Operating System: All
Platform: All
-
39069
Description
org.apache.commons.dbcp.PoolingDatasource.PoolGuardConnectionWrapper.close()
violates the Connection.close() contract specified in the Java 1.5 API. The
current API specifies that calling close() on an already-closed connection is a
no-op. (Blame Sun for the bug. The API didn't used to say that.)
PoolGuardConnectionWrapper.close() first calls checkOpen() which throws an
exception if close() has already been called. Clearly that's not a no-op.
The simplest fix is to change the first line in the close() method from this:
checkOpen();
to this:
if (this.delegate == null) return;
As of today (2006-03-22) this bug is in the latest SVN source (and has been in
previous versions as well).
DelegatingConnection and PoolingConnection don't seem (from a quick glance) to
have this problem.