commons-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Berin Loritsch <blorit...@apache.org>
Subject Re: Database Connection Pool
Date Thu, 27 Dec 2001 19:05:29 GMT
Randy Speh wrote:

> I would be very interested to see what your connection
> pooling code looks like.  I been trying to choose the
> most appropriate connection pooling technique and have
> been considering adapting one myself.  Although, I'd
> really rather use something from the open source
> community.
> 


Currently there is dbcp in Commons, Turbine connection pooling,
and Avalon connection pooling.

Both DBCP and Avalon provide similar semantics inspired by
the official JDBC DataSource specifications--when you "close"
the connection, it returns the Connection to the pool.  Turbine
(if I recall) makes you explicitly return it to the pool yourself.

I won't get involved with which is the best pattern.

Beyond that basic difference, there is alot of difference in the
manner that the connection pools are configured.  Since I don't
have any real information on DBCP and Turbine pooling, I won't
talk about them.  Here is what Avalon's Configuration looks like:

<connection>
   <pool-controller min="2" max="10" grow="2">
     <keep-alive>SELECT 1 FROM DUAL</keep-alive>
   </pool-controller>

   <driver>oracle.jdbc.driver.OracleDriver</driver>
   <dburl>jdbc:oracle:thin:@localhost:1521:ORCL</dburl>
   <user>scott</user>
   <password>tiger</password>
</connection>

The Pool Controller specifies how many connections the pool starts
with ("min"), the absolute maximum number of connections ("max"),
and how many new connections it creates at a time when it needs
more ("grow").  It is important to note that the maximum is absolute.
The pool will not go beyond that maximum number.  The reason being
that some drivers have license restrictions and it helps the pool
to not violate the license.  The last part ("keep-alive") is the
query used by the pool to determine if the connection has been closed
by the server.  We found out that not all databases are created
equal, and while "SELECT 1" works for many databases, Oracle requires
that "1" be selected from the dummy table "DUAL", and others like
Informix require you to select from an application's table.

You can determine for yourself if this is desirable--and possibly
DBCP might steal ideas to narrow the differences.  Who knows....


-- 

"They that give up essential liberty to obtain a little temporary safety
  deserve neither liberty nor safety."
                 - Benjamin Franklin


--
To unsubscribe, e-mail:   <mailto:commons-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:commons-dev-help@jakarta.apache.org>


Mime
View raw message