Может ли метод уничтожения фильтра сервлетов вызываться с помощью ловушки отключения или есть лучшее решение?
У меня есть фильтр сервлетов Java, который должен очищать некоторые ресурсы всякий раз, когда фильтр больше не используется. Это достигается путем реализации Filter.destory
метод. Теперь мне интересно, если этот метод также вызывается, когда весь контейнер сервлета выключен. Поэтому мне было интересно, должен ли я установить отключающий крюк для этой цели. Или будет Filter.destroy
метод всегда вызывается, когда контейнер сервлета выключен.
Когда я устанавливаю точку останова в своем крюке отключения, я никогда не добираюсь до него. Но я думаю, это потому, что IntelliJ уже отключен или по какой-то другой причине. Это делает это трудно выяснить, экспериментируя.
Спасибо за любую помощь!
1 ответ
Использование Jetty 6.1.22 Filter.destroy
был вызван во время выключения. Спецификация просто определяет
Вызывается веб-контейнером, чтобы указать фильтру, что он выведен из эксплуатации.
Вы должны проверить это без IntelliJ, в "реальной" среде, с автономным tomcat
или же jetty
,
Во всяком случае, просто чтобы быть в безопасности, вы можете очистить как в Filter.destroy
а также ServletContextListener.contextDestroyed
, В этом случае синхронизируйте ваш фильтр для очистки. И убедитесь, что, если вы дважды очиститесь, что 2-й запуск не завершится с исключением и т. Д.