| <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> |