Подтвердить что ты не робот

Как очистить кеш tomcat при развертывании нового .war файла? Есть ли настройка конфигурации?

У меня есть приложение hello, world servlet, с которым я просто играю, и выталкиваю его на мой сервер tomcat на VPS.

Когда я вношу изменения в свой код и развертываю его, tomcat не обслуживает недавно опубликованный код (даже после запуска службы снова).

Я остановлю службу, а затем перетащите новый файл войны в /webapps/, и я также обязательно удалю старую вложенную папку.

Когда я перезапускаю сервер, он по-прежнему служит старой кодовой базе.

Есть ли параметр в конфиге, чтобы остановить это поведение?

Кроме того, какие папки мне нужно удалить? Пожалуйста, будьте конкретными (папки и пути), поскольку я попытался удалить некоторые, а havent "получил в любом месте.

4b9b3361

Ответ 1

Вы можете удалить каталог "work".

Вы уверены, что это не проблема кеширования браузера?

Ответ 2

Я бы добавил, что в случае действительно странного поведения - где вы тратите пару часов на WTF - попробуйте вручную удалить каталог /webapps/yourwebapp/WEB-INF/classes. Исходный файл java, перенесенный на другой пакет, не удалит файл скомпилированного класса - по крайней мере, в случае вложенного веб-приложения на TC. Это может серьезно свести вас с ума от непредсказуемого поведения, особенно с аннотированным сервлетом.

Ответ 3

Немного поздно для вечеринки, вот как я это делаю

  • Отменить развертывание приложения из менеджера
  • Завершение работы tomcat с помощью ./shutdown.sh
  • Удалить кеш браузера
  • Удалите приложение из webapps и /work/Catalina/...
  • Запуск tomcat с помощью ./startup.sh
  • Скопируйте новую версию приложения в /webapps и запустите его.

Ответ 4

Кажется, это временная метка. Согласно документации tomcat, если есть новый jsp или сервлет, это создаст новый _java файл в рабочей папке, если файлы _java.class не являются более новыми, чем jsp или сервлеты.

Ответ 5

Tomcat также создает каталог ROOT на том же уровне, что и work/. ROOT/ также кэширует старые вещи. удалите ROOT вместе с Catalina в каталоге work.

Ответ 6

Я столкнулся с каким-то странным поведением, которое не отражает фактическую базу кода, поэтому через некоторое время, пробовав несколько решений, моя проблема была решена путем ручного удаления всего в /var/cache/tomcat8/

Ответ 7

Похоже, что ваш загрузчик классов не загружает классы сервлета после их обновления. Это может быть исправлено, если вы измените файл web.xml, который должен побудить сервер/контейнер повторно развернуть и перезагрузить классы сервлета. Думаю, добавьте пустую строку в конец вашего web.xml и сохраните ее, а затем посмотрите, исправляет ли она ее. Как я уже сказал, это может исправить это или нет.

Удачи!

Ответ 8

У меня плохое время ставить мой файл войны на /etc/tomcat7/webapps, но реальный путь был /var/lib/tomcat7/webapps. Можете ли вы использовать sudo find / -type f -name "my-war-file.war", чтобы узнать, где он.

И удалите эти папки /tmp/hsperfdata_* и /tmp/tomcat7-tomcat7-tmp.

Ответ 9

У меня была одна и та же проблема дважды, но во второй раз я понял, что это не проблема для Tomcat вообще. Попробуйте удалить кеш браузера, обновите страницу и посмотрите, есть ли новая версия страницы на вашем сервере отображается. Он работал со мной.

Ответ 10

Я новичок в tomcat, и эта проблема сегодня меня заводила. Это было спорадично. Я попросил коллегу помочь, и война расширилась, и это было так, как предполагалось. 3 развертывается позже в тот же день, он вернется к исходной версии.

В моем случае MySite.WAR расширился до ROOT И MySite. MySite обычно подавали. Но иногда tomcat решил, что ему понравился ROOT, и все мои изменения исчезли.

"Решение" заключается в удалении сайта ROOT при каждом развертывании войны.