Estoy utilizando la agrupación de conexiones dbcp en tomcat (versión 7) y tengo una pérdida de conexión en algún lugar de mi código. Después de un corto período de tiempo, una solicitud para una nueva conexión devuelve la siguiente excepción:Intentando identificar el origen de las conexiones abandonadas en tomcat
"No se puede obtener una conexión, error de la piscina Tiempo de espera para el objeto inactivo"
Volví a través de mi código y para mí parece que todas las conexiones se cierran correctamente (no todos dicen esto ...).
Con el fin de depurar este he añadido las siguientes propiedades en context.xml:
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="300"
Así que el código de recurso ahora se ve así: Tomcat
<Resource name="jdbc/findata" auth="Container" type="javax.sql.DataSource"
maxActive="20" maxIdle="5" maxWait="10000"
username="root" password="xxxxxx" driverClassName="com.mysql.jdbc.Driver"
logAbandoned="true" removeAbandoned="true" removeAbandonedTimeout="300"
url="jdbc:mysql://localhost:3306/findata"/>
entonces me reinicia y comenzó a golpear Web páginas hasta que apareció el mensaje de error (en la ventana del navegador). Sin embargo, todavía no he podido averiguar dónde está escribiendo la información de la propiedad "logAbandoned". Estoy mirando en
/usr/share/apache-tomcat-7.0.11/logs
pero el archivo de registro sólo recientemente modificado en La Haya
localhost_access_log.2011-04-18.txt
Cualquier ayuda es muy apreciada.
Nunca terminé averiguando cómo conseguir que las conexiones abandonadas aparezcan en los registros, pero volví a revisar el código en otra ocasión y esta vez tuve éxito en descifrar la fuente de la fuga. ¿Quién necesita depuradores o registros? ¿Verdad? ;) – opike