После поиска в сети по этой проблеме я обнаружил некоторые похожие проблемы, о которых сообщили несколько человек. Все они указывают на общую проблему: потоки. По сути, если вы запускаете новые потоки в своем приложении (либо в своем коде, либо с помощью стороннего инструмента, такого как Quartz
), вы должны убедиться, что все потоки остановлены надлежащим образом, когда приложение удалено с сервера. Здесь Вот некоторые цитаты из поисков:
Николай Рыдзевский написал :
Похоже, что после удаления экземпляра webapp фоновый кварцевый поток хочет что-то сделать, и тогда возникает исключение.
Другое (и лучшее объяснение) на jspwiki.org :
Возможно, это связано с неудачной перезагрузкой веб-приложения Tomcat. Приложение выгружено, но все потоки не закрываются должным образом. В результате, когда потоки пытаются работать, они сталкиваются с тем фактом, что Tomcat выключил загрузчик классов, и регистрируется ошибка.
Итак, чтобы решить эту проблему, вы должны убедиться, что все потоки, запущенные вашим приложением, будут остановлены при отмене развертывания приложения (или повторном развертывании, это то же самое). Вы можете сделать это, зарегистрировав ServletContextListener
на сервере приложений и остановив свои потоки внутри метода contextDestroyed(ServletContextEvent)
.