2016-01-04 1 views
1

я сценарий,Java | Apache Tomcat | Grab Исключение и перезапуск сервер

Если ниже исключение происходит в коте "java.sql.SQLException: [Microsoft] [ODBC Microsoft Access Driver] Ресурс системы превышен."

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

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

Благодаря

+0

Можете ли вы поделиться кодом, в котором вы создаете/используете соединение? Звучит как утечка ресурсов для меня, вы должны исправить, а не перезапускать сервер, если это произойдет. У вас много мест, где это происходит, или вы можете ограничить количество мест размещения источников? – Jan

ответ

1

Вы упомянули Bash, так что одна возможность, это есть хрон, который вызывает скрипт, который читает журнал каждый количество х, в поисках этого исключения, и если найден перезапуск 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 был перезапущен и/или проверьте, что служба перезагрузилась в обычном режиме. Вам также понадобится некоторая форма проверки даты или переименования журнала или каждый раз, когда этот журнал будет прочитан, он мог бы воздействовать на предыдущие случаи регистрации этого Исключения.

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