Maneira correta de manter as conexões em pool ativas (ou desativá-las e obter novas conexões) durante uma inatividade mais longa para o aplicativo MySQL, Grails 2

Eu tenho um aplicativo grails que tem rajadas de alta atividade, mas, em seguida, muitas vezes períodos de inatividade que podem durar várias horas para a noite. Eu noto que os primeiros usuários de manhã obtêm o seguinte tipo de exceção, e acredito que isso se deve às conexões no conjunto ficando obsoletas e ao banco de dados MYSQL fechando-as.

Eu encontrei informações conflitantes no Googling sobre se usar a propriedade de conexão Connector / J 'autoReconnect = true' é uma boa idéia (e se o cliente ainda obterá uma exceção mesmo se a conexão for restaurada) ou se deseja definir outras propriedades que periodicamente descarregam ou atualizam conexões inativas, testam em empréstimos, etc. O Grails usa o DBCP embaixo. Eu tenho atualmente uma configuração simples como abaixo, e estou procurando uma resposta sobre a melhor forma de garantir que qualquer conexão tirada do pool após um longo período inativo seja válida e não fechada.

dataSource {
        pooled = true
        dbCreate = "update"
        url = "jdbc:mysql://my.ip.address:3306/databasename"
        driverClassName = "com.mysql.jdbc.Driver"
        dialect = org.hibernate.dialect.MySQL5InnoDBDialect
        username = "****"
        password = "****"
        properties {
          //what should I add here?
          }
    }

Exceção

    2012-06-20 08:40:55,150 [http-bio-8443-exec-1] ERROR transaction.JDBCTransaction  - JDBC begin failed
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: The last packet successfully received from the server was 64,129,968 milliseconds ago.  The last packet sent successfully to the server was 64,129,968 milliseconds ago. is longer than the server configured value of 'wait_timeout'. You should consider either expiring and/or testing connection validity before use in your application, increasing the server configured values for client timeouts, or using the Connector/J connection property 'autoReconnect=true' to avoid this problem.
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116)
    at com.mysql.jdbc.MysqlIO.send(MysqlIO.java:3851)
    ...... Lots more .......
Caused by: java.sql.SQLException: Already closed.
    at org.apache.commons.dbcp.PoolableConnection.close(PoolableConnection.java:114)

questionAnswers(2)

yourAnswerToTheQuestion