Получать уведомления, когда приложение работает в бесконечном цикле?

У нас есть продукт, построенный на стеке Java, и в основном это транзакционная система Мне просто любопытно узнать, есть ли у нас какой-либо механизм, позволяющий отправлять уведомление, если программа заходит в бесконечный цикл? Или, может быть, мы можем убить сам процесс Java? или что то лучше?

2 ответа

Решение

Если вы используете JTA-транзакции, вы можете установить тайм-аут для них на вашем сервере приложений. Исключение будет выдано, если транзакция занимает много времени (например, из-за бесконечного цикла, но также, если транзакция просто занимает слишком много времени. Чем выше установленный порог, тем ниже риск отлова всего, что не является цикл infinte.) Тогда, я думаю, вы могли бы использовать Аспектно-ориентированное программирование (AOP), чтобы обернуть это исключение и создать уведомление.

В общем, это неразрешимая проблема, см. Проблему остановки. Конечно, вы можете установить некоторое время ожидания или установить "счетчик команд", но затем возникает новая проблема с горизонтом (что, если программа останавливается после timeout + 1 секунд?)

Другие вопросы по тегам