Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uniknąć zawieszonych połączeń DB z pulą połączeń JDBC TomEE?

Z powodzeniem używam pliku resources.xml w moim WEB-INF folder podobny do tego w moich projektach produkcyjnych:

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

Jedną ważną różnicą jest użycie DataSourceCreator = tomcat . Gwarantuje to, że TomEE tworzy pulę, która zajmuje się walidacją połączeń („SELECT 1”) i usuwa zablokowane/nieaktualne połączenia, zwalniając w ten sposób zasoby w tle.

Natomiast DataSourceCreator = dbpc (co jest domyślne gdy nie jest ustawiona:"Domyślnie podane pule to DBCP... ") zachowywał się tak, jak to opisałeś/doświadczyłeś (przekroczenia czasu,...). Sprawdź dokumentacja powiązana dla dalszych różnic.

Zauważ też, że = jest używany w mojej konfiguracji roboczej. Odkryłem, że w poprzednich wydaniach TomEE wydawało się działać bez = . Zalecam jednak skonfigurowanie za pomocą = konsekwentnie, gdy docelowy serwer aplikacji to TomEE 1.7.2 lub nowszy.

Więcej informacji na ten temat można również znaleźć w Konfiguracji źródła danych strona.

Mam nadzieję, że to pomoże.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Grupuj kolejno wartości w MySQL i dodaj identyfikator do takich grup

  2. Entity Framework 5.0 – najpierw kod z MySQL w WPF

  3. generuj wybrane opcje za pomocą tablic php

  4. Jak pokazać tablice wielowymiarowe wstawić do tabeli MySQL?

  5. Składnia SQL UPDATE – wymieniona przez DBMS