MySQL Lists are EOL. Please join:

List:General Discussion« Previous MessageNext Message »
From:Alec.Cawley Date:November 8 2002 10:30am
Subject:Re: JDBC Connection Pooling Not Quite Right?
View as plain text  
Hi, Rick,

> Hi. I hope this is the right place to discuss this, now that the drivers
are
> part of the official MySQL stuff. If not, please let me know where I
should
> post this. Thanks.

The Java list - java@stripped - would probaby be more appropriate
than the general list, but otherwise this is the right place.

> I've been using the 2.0.14 version of the drivers, and just recently
> switched to using the pooled connections supplied by JDBC 2.0. What I
> noticed was that I'm still creating many connections. For example, I did
an
> operation in my web app that makes about 30 connections, and the number
of
> connections opened in MySQL (which I had just recently restarted) jumped
> from 200 to 231.

> So, I went digging through the JDBC code, and found that every time the
> PooldedDataSource returns a new PooledConnection, with a new physical
> Connection obtained from the non-pooled DataSource. No where can I find
the
> actual pool in which the pooledConnections are kept.

> Am I completely missing something, and there some other thing I need to
do,
> or is this how it's supposed to be, or (most likely, I think), is there a
> serious flaw in the MySQL JDBC drivers?

You are missing something, I am afraid. To quite Sun's Javadoc for the
PooledConnection class

"An object that provides hooks for connection pool management.
A PooledConnection object represents a physical connection to
a data source. The connection can be recycled rather than being
closed when an application is finished with it, thus reducing
the number of connections that need to be made.

An application programmer does not use the PooledConnection
interface directly; rather, it is used by a middle tier
infrastructure that manages the pooling of connections."

You need to obtain or write a Pool Manager. Application code then
calls PoolManager.getConnection () instead of creating a new connection,
but otherwise runs unchanged. When the application calls Connection.close(,
the PoolManager is informed and can take appropriate recycling
action (releasing any resultsets, adding to a pool of available
connections, deleting long-unused connections before MySQL gets
bored of them.... ).

      Alec Cawley



Thread
JDBC Connection Pooling Not Quite Right?Rick Mann8 Nov
Re: JDBC Connection Pooling Not Quite Right?Alec.Cawley8 Nov
Re: JDBC Connection Pooling Not Quite Right?Rick Mann9 Nov
  • Re: JDBC Connection Pooling Not Quite Right?Mark Matthews10 Nov