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

Como forçar a reutilização de conexões no pool jdbc?


Você não está realmente usando um pool de conexões. Um ConnectionPoolDataSource não se destina a ser usado diretamente. Destina-se como um (especial) DataSource para PooledConnection objetos que são mantidos em um pool de conexões por um (normal) DataSource implementação que fornece pool de conexão.

Um desenvolvedor normal não deve usar um ConnectionPoolDataSource diretamente, destina-se ao uso com pools de conexão fornecidos por Servidores de Aplicativos ou a ser agrupado em DataSource de uso geral s que forneciam o pool de conexões.

Quando uma Connection for solicitado do pool de conexões, ele fará o checkout de um PooledConnection existente (ou solicite um novo de seu ConnectionPoolDataSource ), recupere uma Connection e devolvê-lo ao usuário. Quando o usuário fecha a Connection , a PooledConnection sinalizará ao pool de conexões que ele está disponível novamente.

Neste caso, você está criando um PooledConnection , recuperando uma Connection dele e, em seguida, descartando o PooledConnection . Isso significa que o PooledConnection é abandonado, e sua conexão física com o banco de dados não pode ser reutilizada e será fechada/descartada quando finalmente for coletada como lixo (normalmente quando o pool de conexões deseja fechar a conexão física, ele chamará close() na PooledConnection ).

Você precisa usar o pool de conexões fornecido pelo seu servidor de aplicativos ou usar um pool de conexões de uso geral, como DBCP, c3p0 ou BoneCP.