-1

Я работаю с веб-приложением Java (spring mvc), подключающимся к базе данных Mysql. Когда я оставил свое заявление в одночасье и не было никакого запроса на обработку в течение ночи, утром он метал java.sql.SQLException: Communication link failure: java.net.SocketException, underlying cause: Software caused connection abort: recv failed ошибки. Я использую пул соединений Apache JDBC, то есть в моем конфигурационном файле Spring.Как исправить java.net.SocketException: Программное обеспечение вызвало прерывание соединения: recv failed

Я сделал некоторые исследования и обнаружил, что реальная причина проблемы заключается в том, что база данных таймаута соединения, когда бездействует, и когда приложение Java пытается подключиться к базе данных, используя то несвежее соединение он бросает

java.sql.SQLException: Communication link failure: 
java.net.SocketException, underlying cause: Software caused connection abort: recv failed error. 
+0

Вы можете попробовать реализовать своего рода сердцебиения механизма, который бы сделать простой запрос к БД, скажем, каждую минуту, чтобы держать связь жив. Например, реализуйте простую хранимую функцию, которая получает целочисленное значение и возвращает одно и то же значение. Это не будет потреблять почти ничего из ресурсов вашего сервера, не допуская простоя ожидания. – FDavidov

+0

Возможный дубликат [com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Ошибка связи связи. Программное обеспечение вызвало прерывание соединения: recv failed] (http://stackoverflow.com/questions/9527459/com-mysql-jdbc-exceptions-jdbc4 -коммуникационный_секремент-связь-link-fai) –

+2

Точный дубликат [Официальные причины для «Программного обеспечения прерывания соединения: ошибка записи сокета»] (http://stackoverflow.com/questions/2126607/official-reasons-for-software-caused -connection-abort-socket-write-error) – EJP

ответ

0

я это исправил problème путем увеличения значения тайм-аута в конфигурационном файле тузд = C: \ Program Files (x86) \ MySQL \ MySQL Server 5.1 \ my.ini:

[туздЫ] wait_timeout = 2147483 interactive_timeout = 2147483

, а затем я перезапустил службу mysql.

спасибо @EJP