tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian J. Dechery" <>
Subject Re: problems with Connections
Date Wed, 21 Aug 2002 19:13:23 GMT
I don't think it is TOTALLY offtopic, since the problem occurs within Tomcat... and when I
close tomcat all the connections and cursors are released...
as I said in my email I close ALL ResultSets and Statements in "finally" blocks...
as for "closing" the Connection... can I use the finalize() in the DAO* classes to use the
method that returns the Connection to the pool?? Cuz I can't see anywhere else where I'd be
able to do that...
.:| Christian J. Dechery
.:| FINEP - Depto. de Sistemas
.:| (21) 2555-0332

>>> 21/08/02 15:32 >>>
This is totally off topic for TOMCAT-USER, but ...

The basic rules for successful use of a connection pool:

* Always close the connection before the current request completes
  (which doesn't really close the underlying Connection; it just
  returns it to the pool.

* Always close your ResultSet and Statement instances when you
  are through with them -- a "finally" clause is good for this.
  It sounds like you have missed some error cases.

* Never try to share an individual Connection across more than
  one request -- Connection instances are *not* shareable.  That's
  why you're using a connection pool in the first place.

I suspect that your code is violating one or more of these principles --
probably on some rarely executed code path (because it takes some time for
the problem to surface).


On Wed, 21 Aug 2002, Christian J. Dechery wrote:

> Date: Wed, 21 Aug 2002 15:01:04 -0300
> From: Christian J. Dechery <>
> Reply-To: Tomcat Users List <>
> To: 
> Subject: problems with Connections
> I have this big problem handling Oracle Connecions...
> something goes wrong... I have tons of classes called DAO"Something"... and a class called
DAO which provides the Connection... the DAO*s requests the Connection from DAO and uses it,
but there is no method to close the connection since it is used by several methods that run
queries (selects and updates)...
> I don't know what goes wrong... but after some time of using the applicatiob the maximum
number of cursors exceeds and the whole application stops, cuz no more queries will run...
and I am closing ALL ResultSets and Statements on the "finally" block of EVERY query...
> this happend when I dispense one Connection to several classes, thus achieving some kind
of sharing... if I turn that sharing off - every class will get an exclusive Connection, the
problem changes... now instead of the maximum number of cursors exceeding, I get maximum number
of processes (connections)...
> the connections (nor the cursors for that matter) are getting closed... I even tried
placing a con.close() on the finalize() method of the DAO*s... but that didn't work... I get
an IOException: socket closed...
> At the Oracle support service, I saw that a lot of people has the exact same problem..
> does anyone knows how to solve this???
> thanks
> btw: I have a "solution" working now... I changed the code of my DAO*s, so that every
method that runs a query, requests a connection, than closes it... but that makes some parts
of the application veeeeeeeeery slow...
> .:| Christian J. Dechery
> .:| FINEP - Depto. de Sistemas
> .:| 
> .:| (21) 2555-0332

To unsubscribe, e-mail:   <>
For additional commands, e-mail: <>

  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message