tomcat-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian J. Dechery" <christ...@finep.gov.br>
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
.:| christian@finep.gov.br
.:| (21) 2555-0332

>>> craigmcc@apache.org 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).

Craig


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

> Date: Wed, 21 Aug 2002 15:01:04 -0300
> From: Christian J. Dechery <christian@finep.gov.br>
> Reply-To: Tomcat Users List <tomcat-user@jakarta.apache.org>
> To: tomcat-user@jakarta.apache.org 
> 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
> .:| christian@finep.gov.br 
> .:| (21) 2555-0332
>
>


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




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