Вы упомянули 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 был перезапущен и/или проверьте, что служба перезагрузилась в обычном режиме. Вам также понадобится некоторая форма проверки даты или переименования журнала или каждый раз, когда этот журнал будет прочитан, он мог бы воздействовать на предыдущие случаи регистрации этого Исключения.
Но с комментарием Яна на ваш вопрос, вероятно, было бы лучше всего решить основную проблему: почему превышены системные ресурсы (например, объединение пулов, потоки и т. Д.).
Можете ли вы поделиться кодом, в котором вы создаете/используете соединение? Звучит как утечка ресурсов для меня, вы должны исправить, а не перезапускать сервер, если это произойдет. У вас много мест, где это происходит, или вы можете ограничить количество мест размещения источников? – Jan