Tivemos alguns problemas semelhantes com um de nossos aplicativos e depois de muito pesquisar adicionamos as seguintes propriedades que resolveram todos os nossos problemas de conexão:
maxAge="180000"
testOnBorrow="true"
testWhileIdle="true"
validationInterval="0" //forces the connection pool to validate each time a connection is given to the application