Загрузка нового файла .war, но tomcat продолжает каким-то образом обслуживать старый код?

#java #tomcat #servlets

#java #tomcat #сервлеты

Вопрос:

У меня есть простое java-приложение hello world, которое я развернул, и в новом коде я изменил вывод сервлета, чтобы печатать некоторые инструкции в цикле.

Локально он работает нормально.

Я загрузил новый файл .war, остановил tomcat, удалил старый .файл войны /webapps и разнесенная папка.

Затем я скопировал новый .war файл, а затем перезапустил tomcat.

Он взорвал папку, но почему-то код старый.

Может ли это быть кэширование.файл войны каким-то образом?

Я изменил server.xml и установите autodeploy=false, но не уверены, имеет ли это значение?

Ответ №1:

удалите рабочий каталог и перезапустите tomcat.

Извините, слишком кратко. Tomcat превратит jsp в исходный код сервлета перед компиляцией, в рабочем каталоге происходит некоторое кэширование, это может быть причиной этого.

Прошло некоторое время с тех пор, как я использовал Tomcat, но я уверен, что структура была чем-то вроде work / host / engine / context, поэтому вы, вероятно, найдете свои материалы в разделе work / localhost / Catalina /—web context —

Комментарии:

1. Эта проблема преследовала меня на протяжении всего этого проекта. Спасибо, что показали мне, как это исправить.

Ответ №2:

Я изменил server.xml и установите autodeploy=false, но не уверены, имеет ли это значение?

ОО.

Из документов

Это значение флага указывает, должны ли автоматически развертываться новые веб-приложения, загруженные в каталог AppBase во время работы Tomcat. Значение флага по умолчанию равно true . Дополнительные сведения см. В разделе Автоматическое развертывание приложений.

Я бы начал с этого.