You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tomcat.apache.org by "daad@libero.it" <da...@libero.it> on 2007/04/21 10:08:21 UTC
Cannot get a connection, pool exhausted
Hello,
i'm trying to achieve DBCP with tomcat 5.5.9. I thought to have done things right since the application could connect to db, but after a night that the application was running, in the morning, in logs, i saw a lot of "Cannot get a connection, pool exhausted" errors.
This is my configuration:
SERVER.XML:
<Server port="8005" shutdown="SHUTDOWN">
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
<Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
<Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener" />
<GlobalNamingResources>
<Environment name="simpleValue" type="java.lang.Integer" value="30" />
<Resource name="UserDatabase" auth="Container" type="org.apache.catalina.UserDatabase" description="User database that can be updated and saved" factory="org.apache.catalina.users.MemoryUserDatabaseFactory" pathname="conf/tomcat-users.xml" />
</GlobalNamingResources>
<Service name="Catalina">
<Connector port="8080" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" connectionTimeout="20000" disableUploadTimeout="true" />
<Connector port="8009" enableLookups="false" redirectPort="8443" protocol="AJP/1.3" />
<Engine name="Catalina" defaultHost="localhost">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" liveDeploy="true" xmlValidation="false" xmlNamespaceAware="false">
</Host>
</Engine>
</Service>
</Server>
CONTEXT.XML:
<Context path="/xx" docBase="xx" debug="5" reloadable="true" crossContext="true">
<Resource
name="jdbc/xxDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="user"
password="pass"
driverClassName="com.mysql.jdbc.Driver"
url="jdbc:mysql://127.0.0.1:3306/xx_xx?autoReconnect=true"/>
</Context>
WEB.XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">
<display-name>xx</display-name>
<listener>
<listener-class>xxx.ApplicationWatch</listener-class>
</listener>
<servlet>
<servlet-name>htmlcontent</servlet-name>
<servlet-class>xxx.HtmlContentServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>htmlcontent</servlet-name>
<url-pattern>/htmlcontent.view</url-pattern>
</servlet-mapping>
<resource-ref>
<description>DB Connection</description>
<res-ref-name>jdbc/xxDB</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
<security-constraint>
<display-name>Security Constraint</display-name>
<web-resource-collection>
<web-resource-name>Protected Area</web-resource-name>
<url-pattern>/*</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>xx</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>Protected Area</realm-name>
</login-config>
<security-role>
<role-name>xx</role-name>
</security-role>
</web-app>
THE WAY I CONNECT TO DB (this is one of the 6-7 methods i have to do stuff on db):
private static Connection con = null;
private static Connection getConnection() throws Exception {
// get context: provides the starting point for resolution of names
Context ctx = new InitialContext();
if (ctx == null) {
throw new Exception("No Context");
}
// retrieve datasource
DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/xxDB");
if (ds == null) {
throw new Exception("No Datasource");
}
// return db connection
return ds.getConnection();
}
public static void doSomething() {
Statement stmt = null;
try {
// get connection
con = getConnection();
if (con == null) {
throw new Exception("No Connection");
}
stmt = con.createStatement();
stmt.executeUpdate("UPDATE yy SET `zz`=0 WHERE `ww`='oo'");
}
catch (Exception e1) {
//
}
// close resources
finally {
try {
stmt.close();
stmt = null;
}
catch (SQLException e2) {
//
}
try {
con.close();
con = null;
}
catch (SQLException e3) {
//
}
}
}
Anybody have a clue of what can be? any help appreciated.
------------------------------------------------------
Passa a Infostrada. ADSL e Telefono senza limiti e senza canone Telecom
http://click.libero.it/infostrada
---------------------------------------------------------------------
To start a new topic, e-mail: users@tomcat.apache.org
To unsubscribe, e-mail: users-unsubscribe@tomcat.apache.org
For additional commands, e-mail: users-help@tomcat.apache.org