Proposal for Database Connection Pool [DBCP] Package

(0) Rationale

Many Jakarta products support interaction with a relational database. Creating a new connection for each user can be time consuming (often requiring multiple seconds of clock time), in order to perform a database transaction that might take milliseconds. Opening a connection per user can be unfeasible in a publicly-hosted Internet application where the number of simultaneous users can be very large. Accordingly, developers often wish to share a "pool" of open connections between all of the application's current users. The number of users actually performing a request at any given time is usually a very small percentage of the total number of active users, and during request processing is the only time that a database connection is required. The application itself logs into the DBMS, and a handles any user account issues internally.

There are several Database Connection Pools already available, both within Jakarta products and elsewhere. A Commons package would give committers an opportunity to coordinate their efforts to create and maintain a efficient, feature-rich package under the ASF license.

(1) Scope of the Package

The package shall create and maintain a database connection pool package written in the Java language to be distributed under the ASF license. The package shall be available as a pseudo-JDBC driver and via a DataSource interface. The package shall also support multiple logins to multiple database systems, reclamation of stale or dead connections, testing for valid connections, PreparedStatement pooling, and other features.

(1.5) Interaction With Other Packages

DBCP relies on:

External configuration of the database connection pool will be supporting using the Digester XML configuration package. (Soon to be a proposal to Jakarta-Commons). Currently, configuration may be accomplished using the Java Object Configuration Language (part of the proposed code base).

(2) Initial Source of the Package

The initial codebase was contributed by Rodney Waldhoff from a working project and can be distributed under the Apache license.

The proposed package name for the new component is org.apache.commons.dbcp.

(3) Required Jakarta-Commons Resources

(4) Initial Committers