A database connection pool creates and manages a pool of connections
to a database. Recycling and reusing already existing connections
to a database is more efficient than opening a new connection.
There is one problem with connection pooling. A web application has
to explicitly close ResultSet's, Statement's, and Connection's.
Failure of a web application to close these resources can result in
them never being available again for reuse, a database connection pool "leak".
This can eventually result in your web application database connections failing
if there are no more available connections.
There is a solution to this problem. The Apache Commons DBCP can be
configured to track and recover these abandoned database connections. Not
only can it recover them, but also generate a stack trace for the code
which opened these resources and never closed them.
To configure a DBCP DataSource so that abandoned database connections are
removed and recycled add the following attribute to the
Resource configuration for your DBCP DataSource:
When available database connections run low DBCP will recover and recycle
any abandoned database connections it finds. The default is
removeAbandonedTimeout attribute to set the number
of seconds a database connection has been idle before it is considered abandoned.
The default timeout for removing abandoned connections is 300 seconds.
logAbandoned attribute can be set to
if you want DBCP to log a stack trace of the code which abandoned the
database connection resources.
The default is