Tomcat undeploy не удаляет артефакты веб-приложений
Как заставить Tomcat удалять артефакты веб-приложений при использовании Менеджера для развертывания приложения?
Я использую Tomcat 6.0.18. Приложение было развернуто с помощью модуля tomcat-maven-plugin 1.0-SNAPSHOT, но поведение одного и того же происходит через плагин maven или веб-интерфейс.
В документации Tomcat содержатся предупреждения о том, как undeploy должен вести себя на
Менеджер.
Файл войны можно удалить; однако распакованный каталог приложений остается препятствием для повторного развертывания.
Ответы
Ответ 1
Возможно, ваше приложение не может быть полностью отключено, потому что есть фоновые потоки (которые вы, скорее всего, начали самостоятельно) или длинные запросы, которые не позволяют программе полностью остановиться.
Проверяли ли вы файлы журнала? Они заявили, что приложение может быть успешно развернуто? Или наоборот? Можете ли вы получить дамп потока после того, как вы попытались развернуть (убить -3 processid в Unix, Ctrl-Break на консоли в Windows) и посмотреть, есть ли что-то еще, что не должно быть?
Также обратите внимание, что большинство приложений, которые я видел, не могут быть полностью развернуты в отношении памяти, которую они использовали. Я часто сталкивался с OutOfMemoryErrors (PermGen), особенно после повторного развертывания webapps (вы найдете много ссылок на PermGen, если вы его рекламируете), поэтому я считаю, что перераспределение подходит для машин разработки, но не для производственных. Лучше это знать, прежде чем вы будете озадачены этим в процессе производства.
Ответ 2
Также может возникнуть проблема с блокировкой файлов (особенно в Windows), если вы получаете доступ к ресурсам в библиотеке JAR через URL-адрес своего приложения.
У меня была аналогичная проблема, и я исправил ее, изменив следующую строку в
Apache Tomcat/conf/context.xml
:
<Context antiJARLocking="true" antiResourceLocking="true" >
(Обратите внимание, что есть некоторые утверждения относительно того, является ли это безопасным для производства, поскольку он создает копии вашего webapp для каждого повторного развертывания, но если вы работаете в Windows, и вы не можете исправить проблему в источнике, это может обеспечивают приемлемое решение).