Estou usando com sucesso um
resources.xml
no meu WEB-INF
pasta semelhante a esta em meus projetos de produção:<?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>
Uma diferença importante é usar
DataSourceCreator = tomcat
. Isso garante que o TomEE crie um pool que cuide da validação da conexão ("SELECT 1") e remova as conexões travadas/desatualizadas, liberando recursos em segundo plano. Por outro lado, o
DataSourceCreator = dbpc
(que é padrão quando não definido:"Os pools fornecidos padrão são DBCP... ") se comportou como você descreveu/experienciou (tempos limite,...). Verifique o documentação relacionada
para mais diferenças. Observe também que
=
é usado na minha configuração de trabalho. Descobri que nas versões anteriores do TomEE parecia funcionar sem =
. No entanto, eu recomendaria configurar com =
consistentemente quando seu servidor de aplicativos de destino for TomEE 1.7.2 ou superior. Mais detalhes sobre isso também podem ser encontrados em Configuração de fonte de dados página.
Espero que ajude.