Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como evitar conexões de banco de dados paralisadas com o pool de conexões JDBC do TomEE?


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.