commons-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Anthony Presley <anth...@zoraptera.com>
Subject DBCP "Statement already closed .... how?"
Date Mon, 24 Nov 2003 23:15:12 GMT
Hello all ....

I've been using DBCP to develop an application for the last 12 months,
and it's finally been placed into "active" use.  Which is great ...
except that it didn't scale very well.  When being used by less than 10
or 15 users, it's fine.  However, as soon as the number of users
increases (or I simulate by clicking on a bunch of database links at one
time), I start getting a lot of "'Statement' already closed." error's in
my logs.

As far as I can tell, I'm not doing any double closings.  Again, this
works fine and dandy when there's only a few users, but once several
people get on it, it starts with these errors, and they're rather
annoying.  Most intruiging is that if you wait a few seconds, then try
again, requests to the database work fine.

I've thrown in a LOT of log() statements in my code to ensure that the
database connections are, in fact, being closed and returned to the pool
-- and they are.  From what I can tell, they're being closed somewhere
in the middle of the processing of them.

My Tomcat config looks like (and I'm using DBCP 1.1 and nightly (have
tried both) and Pool 1.1) :

        <ResourceParams name="jdbc/ifx" scope="Shareable">
                <parameter>
                        <name>factory</name>
                       
<value>org.apache.commons.dbcp.BasicDataSourceFactory</value>
                </parameter>

                <parameter>
                        <name>maxActive</name>
                        <value>15</value>
                </parameter>

                <parameter>
                        <name>maxIdle</name>
                        <value>3</value>
                </parameter>

                <parameter>
                        <name>validationQuery</name>
                        <value>SELECT user.id FROM user WHERE id =
1</value>
                </parameter>

                <parameter>
                        <name>removeAbandonedTimeout</name>
                        <value>300</value>
                </parameter>
        
                <parameter>
                        <name>removeAbandoned</name>
                        <value>true</value>
                </parameter>

                <parameter>
                        <name>maxWait</name>
                        <value>10000</value>
                </parameter>

                <parameter>
                        <name>driverClassName</name>
                        <value>com.informix.jdbc.IfxDriver</value>
                </parameter>

                <parameter>
                     <name>url</name>
		<value>jdbc:informix-sqli://ids:1314/development:INFORMIXSERVER=london_net</value>
                </parameter>
        </ResourceParams>

A chunk of the log is:

2003-11-24 17:04:29 InternalClients: Closing connections
2003-11-24 17:04:29 InternalClients: ERROR: Servlet InternalClients, SQL
Error lookup up General Information: 'Statement' already closed.
RootCause: null: /Error
2003-11-24 17:04:29 InternalClients: ERROR: Servlet InternalClients,
General Error viewing internal client information: null RootCause: null:
/Error
2003-11-24 17:04:29 InternalClients: Closing connections
2003-11-24 17:04:29 InternalClients: Closed
2003-11-24 17:04:29 StandardWrapperValve[InternalClients]:
Servlet.service() for servlet InternalClients threw exception
java.lang.IllegalStateException
        at
org.apache.coyote.tomcat4.CoyoteResponseFacade.sendRedirect(CoyoteResponseFacade.java:340)
        at azure.servlets.Azure.err(Azure.java:76)
        at
azure.servlets.InternalClients.processRequest(InternalClients.java:199)
        at azure.servlets.InternalClients.doGet(InternalClients.java:34)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:740)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:853)
        at
org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:247)

Again, the link that generated the error .... clicking on it right after
it logged these error's, it works fine.  Which obviously (to me?) leads
me right to ... a problem with the DBCP, or the DB, or my code.  These
are not simple problems to troubleshoot, it appears.

I can post the code the generates this .... if that would help.  At this
point in the game, I'm pretty much at my wits ends.

Any help is much appreciated ....

--Anthony

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-user-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-user-help@jakarta.apache.org


Mime
View raw message