isso acontece imediatamente ou depois de um tempo? ou seja, os checkouts inicialmente são bem-sucedidos, mas depois ficam assim? em caso afirmativo, parece um vazamento de conexão. por favor, tente definir os parâmetros c3p0 unreturnedConnectionTimeout e debugUnreturnedConnectionStackTraces para ver se há um vazamento. Consultehttp://www.mchange.com/projects/c3p0/#configuring_to_debug_and_workaround_broken_clients , http://www.mchange.com/projects/c3p0/#unreturnedConnectionTimeout , http://www.mchange.com/projects/c3p0/#debugUnreturnedConnectionStackTraces .
se isso acontecer imediatamente, se nenhuma conexão for verificada com êxito, a questão é se o conjunto já conseguiu adquirir conexões. por padrão, se nunca for bem-sucedido, após cerca de 30 segundos, seu encadeamento deve quebrar com uma falha. (não parece que você fez isso, mas se, por exemplo, você definir o AcquirRetryAttempts como zero, o c3p0 pode travar indefinidamente esperando por Conexões.)
para depurar problemas do c3p0, é útil capturar as informações de versão e configuração que o c3p0 despeja nos logs no nível INFO na inicialização do pool.
boa sorte!