Tenemos una API que utiliza hibernación como herramienta ORM y usamos c3p0 como el controlador de grupo de conexiones. No tenemos problemas cuando estamos bajo carga. Sin embargo, nos estamos quedando sin excepciones de "incapaz de obtener una conexión" cuando la API ha estado inactiva por un día más o menos. Entonces, si ningún cuerpo usa la API durante el fin de semana, recibimos errores de conexión el lunes por la mañana.Tiempo de espera de conexión después del período de inactividad
Caused by: java.sql.SQLException: An attempt by a client to checkout a Connection has timed out.
Utilizamos mysql como base de datos. En mi investigación, llegué a saber que mySQL hace que las conexiones se vuelvan obsoletas después de 8 horas más o menos. Es posible que el grupo de conexiones proporcione una conexión obsoleta al cliente y, por lo tanto, las excepciones de tiempo de espera de conexión para el cliente.
En este momento, no tenemos ninguna prueba de conexión configurada en C3Po. Digamos, si uso IdleTestPeriod para probar la conexión antes de que el grupo la dé al cliente. Entonces, ¿qué sucede si todas mis conexiones no pasan la prueba en un momento determinado? ¿Se eliminarán esas conexiones fallidas del grupo y se generarán nuevas conexiones activas de nuevo?
Actualmente, esta es la configuración de c3p0 que estamos utilizando. ¿Alguna otra razón posible para este problema?
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
<property name="driverClass" value="${----}"/>
<property name="jdbcUrl" value="${----}"/>
<property name="user" value="${----}"/>
<property name="password" value="${------}"/>
<property name="minPoolSize" value="5"/>
<property name="acquireIncrement" value="5" />
<property name="maxPoolSize" value="125" />
<property name="maxStatements" value="10" />
<property name="maxIdleTime" value="180" />
<property name="maxIdleTimeExcessConnections" value="30" />
<property name="checkoutTimeout" value="3000" />
<property name="preferredTestQuery" value="SELECT 1" />
</bean>
Gracias por la ayuda