Ява | Апач Томкэт | Возьмите исключение и перезапустите сервер

У меня есть сценарий,

Если ниже возникает исключение в tomcat, «java.sql.SQLException: [Microsoft] [ODBC Microsoft Access Driver] превышен системный ресурс».

Затем перезапустите сервер.

Есть ли возможное решение.

Спасибо


person sharan jain    schedule 04.01.2016    source источник
comment
Можете ли вы поделиться кодом, где вы создаете/используете соединение? Звучит как утечка ресурсов для меня, которую вы должны исправить вместо перезапуска сервера, если это произойдет. У вас много мест, где это броски, или вы можете ограничить количество исходных мест размещения?   -  person Jan    schedule 04.01.2016


Ответы (1)


Вы упомянули Bash, поэтому одной из возможностей является задание cron, которое вызывает сценарий оболочки, который считывает журнал каждый раз, когда x, ищет это исключение, и, если он найден, перезапустите Tomcat следующим образом:

#!/bin/sh

results=`grep " java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] System resource exceeded." /path/to/tomcat.log

if [ ! -z "$results" ]
then
    service tomcat restart
fi

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

Но с комментарием Яна к вашему вопросу, вероятно, лучше всего было бы решить основную проблему, связанную с превышением системных ресурсов (например, пул соединений, потоки и т. д.).

person Crazy Dino    schedule 04.01.2016