sql >> Databasteknik >  >> RDS >> Mysql

Hur undviker man fastnade DB-anslutningar med TomEEs JDBC-anslutningspool?

Jag använder framgångsrikt en resources.xml i min WEB-INF mapp som liknar denna i mina produktionsprojekt:

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

En viktig skillnad är att använda DataSourceCreator = tomcat . Detta säkerställer att TomEE skapar en pool som tar hand om anslutningsvalidering ("SELECT 1") och tar bort blockerade/föråldrade anslutningar, vilket frigör resurser i bakgrunden.

Däremot är DataSourceCreator = dbpc (vilket är standard när inte inställt:"Standardpooler är DBCP... ") betedde sig som du beskrev/upplevde det (timeouts,...). Kontrollera relaterad dokumentation för ytterligare skillnader.

Observera också att = används i min arbetskonfiguration. Jag upptäckte att det i tidigare TomEE-utgåvor verkade fungera utan = . Jag skulle dock rekommendera att konfigurera med = konsekvent när din målapplikationsserver är TomEE 1.7.2 eller högre.

Ytterligare information om detta finns också i DataSource Configuration sida.

Hoppas det hjälper.




  1. ORA-01804-fel vid försök att ladda Oracle dbDriver

  2. Vilken är den korrekta syntaxen för att använda Database.ExecuteSqlCommand med parametrar?

  3. Köra migreringar med Rails i en Docker-container med flera containerinstanser

  4. Sortera efter veckodag från måndag till söndag