Simple question - are there more than 100 requests active when this happens?
Larry
On 4/21/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote:
Now instead of set connection static i just create a new one for each query to
perform, so if there are concurrent queries it shouldn't cause any problem:
private 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 void doSomething() {
Connection con = null;
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 (Exception e2) {
//
}
try {
con.close();
con = null;
}
catch (Exception e3) {
//
}
}
}
is there anything else i should change for getting the pool connection to work?
Thanks in advance.
---------- Initial Header -----------
From : "[EMAIL PROTECTED]" [EMAIL PROTECTED]
To : "users" [email protected]
Cc :
Date : Sat, 21 Apr 2007 10:08:21 +0200
Subject : 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: [email protected]
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
------------------------------------------------------
Passa a Infostrada. ADSL e Telefono senza limiti e senza canone Telecom
http://click.libero.it/infostrada
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
---------------------------------------------------------------------
To start a new topic, e-mail: [email protected]
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]