Приложение Spring теряет соединение с MySql через 8 часов. Как правильно настроить?

У меня есть приложение Spring, которое, как я полагаю, использует DBCP connection pooling для подключения к базе данных MySql. Я говорю "верю", потому что в этой области я не очень силен, и я не уверен, что все настроено правильно. У меня нет проблем с запуском приложения, и все работает нормально. Проблема возникает ночью. Приложение не используется интенсивно, и за ночь оно, очевидно, теряет соединение с MySql. Я изучил этот вопрос и выяснил, что у MySql есть 8-часовое окно, после чего он отключается или что-то в этом роде. Меня это устраивает, но когда пользователь пытается войти в систему утром, он получает ошибку типа:

Сбой канала связи. Последний пакет успешно получен 60 000 000 мс назад. Последний пакет успешно отправлен 15 мс назад.

Вот в чем проблема. Мне нужно, чтобы они могли переподключаться утром, не сталкиваясь с этой проблемой. Единственный способ, которым я, похоже, могу решить эту проблему, - это перебросить сервер Tomcat. Если разобраться, кажется, что объединение DBCP должно как-то предотвратить это, но я не могу найти надежный источник информации о том, как его настроить. Я надеюсь, что кто-нибудь здесь сможет мне помочь. Вот моя текущая конфигурация, все сделано в Spring xml файле:

app-data.xml












    
    
        
            
            
        
    



    
    
    
    
    



    



    
    



    




Я не уверен, какие конкретные свойства мне нужно добавить, чтобы позволить приложению повторно подключаться к базе данных. Я не возражаю, если оно закроет соединение через несколько часов, но оно должно автоматически переподключаться и не выдавать подобных ошибок. Я также не уверен, что приложение действительно настроено на использование пула соединений. Поэтому любая помощь будет очень признательна, спасибо.

UPDATE

Я нашел эту страницу и думаю, что все, что мне нужно сделать, это добавить свойство ValidationQuery. Может ли кто-нибудь проверить, будет ли это иметь желаемый эффект, оставляя все остальное по умолчанию? Я полагаю, что это позволит использовать testOnBorrow аспект DBCP. Я не совсем понимаю, что делает testOnBorrow в объяснении, но я думаю, что это сделает то, что я хочу. Кто-нибудь может подтвердить? Спасибо.

22
задан cardician 16 December 2011 в 14:31
поделиться