You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "Christian J. Dechery" <ch...@finep.gov.br> on 2002/08/21 20:01:04 UTC

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


Re: problems with Connections

Posted by "Craig R. McClanahan" <cr...@apache.org>.
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 <ch...@finep.gov.br>
> Reply-To: Tomcat Users List <to...@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:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>