Forums Register Login

"Cannot get a connection" exception

+Pie Number of slices to send: Send
Hi everyone,

I'm developing a web-application using the JSF framework and I'm deploying it on a Apache Tomcat 6.0.18. The server is installed on a CentOS5 Linux server.

Sometime, apparently without any reason I get the following exception:

org.apache.tomcat.dbcp.dbcp.SQLNestedException: Cannot get a connection, pool error Timeout waiting for idle object

and the DB cannot be queried anymore (no more connections possible from my application). The only solutions is to restart Tomcat or the machine.


I'm handling user authentication through the Apache Tomcat DataSourceRealm method. My database is an Oracle XE and as a connector I'm using the one supplied by Oracle ojdbc14.jar.

I open connections to my DB with a JNDI Resource. The configuration (from context.xml) is the following one:



I'm closing every connection through a method that close every previously opened instance of the following classes: Connection, Statement, PreparedStatement, ResultSet. I tried also monitoring the number of connection opened at one time and they never overcome a total of 3.

The same happens with the Tomcat Server given in bundle with NetBeans 6.7.

Below a full stack-trace taken from the catalina.out log file.




Thanks for any help

Luca
+Pie Number of slices to send: Send
 

I'm closing every connection through a method that close every previously opened instance of the following classes: Connection, Statement, PreparedStatement, ResultSet. I tried also monitoring the number of connection opened at one time and they never overcome a total of 3.

Recheck that code. The error shows that you are out of connections. Better close Connection, Statement, etc... in the proper place: immediately after use, in a final block.
+Pie Number of slices to send: Send
 

Jan Cumps wrote:

I'm closing every connection through a method that close every previously opened instance of the following classes: Connection, Statement, PreparedStatement, ResultSet. I tried also monitoring the number of connection opened at one time and they never overcome a total of 3.

Recheck that code. The error shows that you are out of connections. Better close Connection, Statement, etc... in the proper place: immediately after use, in a final block.




Actually I do close everything in the final block. I also tought that there must be an error somewhere, but I can't find it! :P so I was wondering if the reason could be different. I'll recheck my code. Thanks
+Pie Number of slices to send: Send
Sagar Rohankar suggested to use the logAbandoned property to find leaks.
See this thread: https://coderanch.com/t/465105/JDBC/java/Inputs-needed-writing-tool-resolve
+Pie Number of slices to send: Send
 

Jan Cumps wrote:Sagar Rohankar suggested to use the logAbandoned property to find leaks.
See this thread: https://coderanch.com/t/465105/JDBC/java/Inputs-needed-writing-tool-resolve



That seems quite interesting...i'll give a try...tahnks!
+Pie Number of slices to send: Send
That logAbandoned property actually helped: I found the error; there was one, indeed. Thanks!
Ever since I found this suit I've felt strange new needs. And a tiny ad:
a bit of art, as a gift, that will fit in a stocking
https://gardener-gift.com


reply
reply
This thread has been viewed 18138 times.
Similar Threads
A JTA EntityManager cannot use getTransaction()
Getting "view could not be restored" error, has anyone seen this before?
Connection Problem in Linux Server
Cannot get a connection, pool error Timeout waiting for idle object
cannot get connection, pool exhausted
More...

All times above are in ranch (not your local) time.
The current ranch time is
Mar 28, 2024 16:45:36.