blob: fa9da27d45d91e5d097148446a4c276bf30e96a4 [file] [log] [blame]
<html>
<head>
<title>Proposal for Database Connection Pool [DBCP] Package</title>
</head>
<body bgcolor="white">
<div align="center">
<h1>Proposal for <em>Database Connection Pool [DBCP]</em> Package</h1>
</div>
<h3>(0) Rationale</h3>
<p>
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.
</p>
<p>
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.
</p>
<h3>(1) Scope of the Package</h3>
<p>
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.
</p>
<h3>(1.5) Interaction With Other Packages</h3>
<p><em>DBCP</em> relies on:
<ul>
<li><a href="http://java.sun.com/j2se">Java Development Kit</a>
(Version 1.2 or later)</li>
<li><a href="http://java.sun.com/j2ee">Java 2 Enterprise Edition</a>
(javax.sql packages only)</li>
<li>Jakarta-Commons Collections package</li>
<li>Jakarta-Commons Pool package</li>
<li>[currently, for JOCL configuration] <a href="http://www.megginson.com/SAX">Simple API for XML</a>
(Version 2.0 or later)</li>
<li>[currently, for JOCL configuration] A SAX 2.0 compliant XML parser (Xerces, XP, etc.)</li>
<li><a href="http://www.junit.org">JUnit Testing Framework</a>
(Version 3.2 or later) - for unit tests only, not required
for deployment</li>
</ul>
<p>
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).
</p>
<h3>(2) Initial Source of the Package</h3>
<p>
The initial codebase was contributed by Rodney Waldhoff from a
working project and can be distributed under the Apache license.
</p>
<p>The proposed package name for the new component is
<code>org.apache.commons.dbcp</code>.</p>
<h3>(3) Required Jakarta-Commons Resources</h3>
<ul>
<li>CVS Repository - New directory <code>dbcp</code> in the
<code>jakarta-commons</code> CVS repository. All initial committers
are already committers on <code>jakarta-commons</code>, so no
additional user setups are required.</li>
<li>Mailing List - Discussions will take place on the general
<em>jakarta-commons@jakarta.apache.org</em> mailing list. To help
list subscribers identify messages of interest, it is suggested that
the message subject of messages about this component be prefixed with
[DBCP].</li>
<li>Bugzilla - New component "DBCP" under the "Commons" product
category, with appropriate version identifiers as needed.</li>
<li>Jyve FAQ - New category "commons-dbcp" (when available).
</ul>
<h3>(4) Initial Committers</h3>
<ul>
<li>Morgan Delagrange</li>
<li>Geir Magnusson Jr.</li>
<li>Craig R. McClanahan</li>
<li>Rodney Waldhoff</li>
<li>David Weinrich</li>
</ul>
</body>
</html>