sql >> Database >  >> RDS >> Mysql

Hoe voorkom je vastgelopen DB-verbindingen met TomEE's JDBC-verbindingspool?

Ik gebruik met succes een resources.xml in mijn WEB-INF map vergelijkbaar met deze in van mijn productieprojecten:

<?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>

Een belangrijk verschil is het gebruik van DataSourceCreator = tomcat . Dit zorgt ervoor dat TomEE een pool creëert die zorgt voor verbindingsvalidatie ("SELECT 1") en vastgelopen/verouderde verbindingen verwijdert, waardoor bronnen op de achtergrond worden vrijgemaakt.

Daarentegen is de DataSourceCreator = dbpc (wat standaard is indien niet ingesteld:"Standaard opgegeven pools zijn DBCP... ") gedroeg zich zoals je het hebt beschreven/ervaren (time-outs,...). Controleer de gerelateerde documentatie voor verdere verschillen.

Merk ook op dat = wordt gebruikt in mijn werkconfiguratie. Ik ontdekte dat het in eerdere TomEE-releases leek te werken zonder = . Ik zou echter aanraden om te configureren met = consistent wanneer uw doeltoepassingsserver TomEE 1.7.2 of hoger is.

Verdere details hierover zijn ook te vinden in de DataSource-configuratie bladzijde.

Ik hoop dat het helpt.




  1. CodeIgniter en AJAX formulier indienen

  2. Update query if-instructie voor Oracle

  3. MySQL MIN() en MAX() met LIMIT

  4. Hoe te SELECTEREN over twee tabellen?