Как обработать исключение MySQL CommunactionException, которое возникает, когда база данных отключается во время работы приложения - PullRequest
0 голосов
/ 11 марта 2019

Приложение Spring Boot использует MySQL + C3p0 DataSource.
Этот источник данных я использую для работы с JDBC и JPA (поставщик Hibernate ).

В каждом методе слоя JDBC DAO у меня есть try / catch SQLException . И этот блок перехвата действительно перехватывает это Исключение связи но ..

Но когда я пытаюсь отправлять запросы все больше и больше, у меня появляется эта трассировка стека.

com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure

Caused by: java.net.ConnectException: Connection refused: connect

+ много деталей ..

И наконец Я ловлю в SQLException блок захвата :

java.sql.SQLException: Connections could not be acquired from the underlying database!

До этого сообщения приложение выглядело как Оно не может подключиться и знает это .
Он дает ответы с кодом состояния 500 очень быстро .

После этого сообщения приложение выглядит как Оно пытается подключиться и не может понять, что оно не может . В этом случае он дает ответы очень медленно .

После включения базы данных приложение работает без перезапуска.

1 Ответ

1 голос
/ 11 марта 2019

Трассировка большого стека может быть напечатана веб-сервером, на котором работает ваше приложение. Не может быть из вашего кода. Вам нужно прочитать о вашем веб-сервере, как избежать такой печати трассировки стека.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...