sql >> Base de Datos >  >> RDS >> Mysql

¿Cómo evitar conexiones de base de datos estancadas con el grupo de conexiones JDBC de TomEE?

Estoy usando con éxito un resources.xml en mi WEB-INF Carpeta similar a esta en uno de mis proyectos de producción:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<Resource id="mysql-jdbc-jta-resource-stg" type="javax.sql.DataSource">
    JtaManaged = true
    DataSourceCreator = tomcat

    validationQuery = SELECT 1
    initialSize = 2
    removeAbandoned = true
    removeAbandonedTimeout = 120

    driverClassName = com.mysql.jdbc.Driver
    url = jdbc:mysql://db-stg.bar.someRegion.rds.amazonaws.com/someDBname
    username = your-username
    password = your-pw
</Resource>
</resources>

Una diferencia importante es usar DataSourceCreator = tomcat . Esto garantiza que TomEE cree un grupo que se encargue de la validación de la conexión ("SELECT 1") y elimine las conexiones bloqueadas/obsoletas, liberando así recursos en segundo plano.

Por el contrario, el DataSourceCreator = dbpc (que es predeterminado cuando no está configurado:"Los grupos proporcionados por defecto son DBCP... ") se comportó como usted lo describió/experimentó (tiempos de espera,...). Compruebe el documentación relacionada para más diferencias.

También tenga en cuenta que = se utiliza en mi configuración de trabajo. Descubrí que en versiones anteriores de TomEE parecía funcionar sin = . Sin embargo, recomendaría configurar con = constantemente cuando su servidor de aplicaciones de destino es TomEE 1.7.2 o superior.

También se pueden encontrar más detalles sobre esto en la Configuración de fuente de datos página.

Espero que ayude.