Я работаю с веб-приложением 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.
Вы можете попробовать реализовать своего рода сердцебиения механизма, который бы сделать простой запрос к БД, скажем, каждую минуту, чтобы держать связь жив. Например, реализуйте простую хранимую функцию, которая получает целочисленное значение и возвращает одно и то же значение. Это не будет потреблять почти ничего из ресурсов вашего сервера, не допуская простоя ожидания. – FDavidov
Возможный дубликат [com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Ошибка связи связи. Программное обеспечение вызвало прерывание соединения: recv failed] (http://stackoverflow.com/questions/9527459/com-mysql-jdbc-exceptions-jdbc4 -коммуникационный_секремент-связь-link-fai) –
Точный дубликат [Официальные причины для «Программного обеспечения прерывания соединения: ошибка записи сокета»] (http://stackoverflow.com/questions/2126607/official-reasons-for-software-caused -connection-abort-socket-write-error) – EJP