Ich verwende erfolgreich eine resources.xml
in meiner WEB-INF
Ordner ähnlich wie dieser in meinen Produktionsprojekten:
<?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>
Ein wichtiger Unterschied besteht in der Verwendung von DataSourceCreator = tomcat
. Dadurch wird sichergestellt, dass TomEE einen Pool erstellt, der sich um die Verbindungsvalidierung kümmert ("SELECT 1") und blockierte/veraltete Verbindungen entfernt, wodurch Ressourcen im Hintergrund freigegeben werden.
Im Gegensatz dazu ist der DataSourceCreator = dbpc
(was Standard ist wenn nicht gesetzt:"Standardmäßig bereitgestellte Pools sind DBCP... ") hat sich so verhalten, wie Sie es beschrieben/erlebt haben (Zeitüberschreitungen, ...). Überprüfen Sie die zugehörige Dokumentation
für weitere Unterschiede.
Beachten Sie auch, dass =
wird in meiner Arbeitskonfiguration verwendet. Ich entdeckte, dass es in früheren TomEE-Versionen ohne =
zu funktionieren schien . Ich würde jedoch empfehlen, mit =
zu konfigurieren konsistent, wenn Ihr Zielanwendungsserver TomEE 1.7.2 oder höher ist.
Weitere Details hierzu finden Sie auch in der DataSource Configuration Seite.
Hoffe es hilft.