Как очистить кэш tomcat

Обновлено: 04.07.2024

Репутация: 1
Всего: 2

Есть такая проблема: после обновления класса сервлета, Tomcat всёравно выдает старую его верию. Дошло до того что даже после удаления класса вовсе сервер всёравно продолжает выдавать ответ от сервлета, как будто он есть.
Насколько я могу понять - это кеширование, если я прав, то не подскажите ли, где можно такое агрессивное кеширование отключить?

Репутация: 5
Всего: 191

kaa, Как вариант, открой браузер напиши localhost:8080 зайди в Tomcat Manager и попробуй раздеплоить проект, потом задеплой назад, перезапусти томкат, и должно сработать.

Репутация: 1
Всего: 2

Samotnik,
М-м-м. Понимаете, перезапуском-то сервера это проблема решалась - кеш сбрасывался, но что же мне теперь, при каждом изменении класса скрипта сервер перезапускать?

ЗЫ: зделал всё как вы сказали - таже петрушка: спасает тока перезагрузка сервера.

Репутация: нет
Всего: нет

kaa, нужнен не перезапуск сервера, а редеплой проекта, разные вещи, факт.
И редеплоить надо каждый раз, это же все таки web-приложение.

Репутация: 32
Всего: 81


По моему, это так работают загрузчики классов. Раз уж вы сами, вручную, обновляете классы на сервере, то наверно, в тестовых целях, можно обойтись и без "редеплоя".
Достаточно будет reload. Вот почитайте
Если нужна автоматизация процесса, там же, на этой странице, показано как создавать командны для ant.

Репутация: 5
Всего: 5

Варианты решения проблемы:
1) Деплоить WAR-файл;
2) Как уже предлагали, перезапускать только свое приложение, а не сервер целиком. Удобнее всего делать это с помощью Ant. Вот примеры задач для Tomcat:

Репутация: 1
Всего: 4

Привет!
Попробуй остановить томкат, и стереть содержимое <tomcat_root/work

Репутация: 6
Всего: 12


Он не кеширует а держит твою апп в памяти. Если ты хо4ешь обнавить класс. тогда тебе надо сделать undeploy a потом deploy твоей апликации. или перегрузить сервак. Вот и всё.

Репутация: 6
Всего: 14

Не redeploy, а reload - вещи разные
А еще можно поставить приложение manager и делать это прямо из браузера

Репутация: 6
Всего: 12


Da,da mozhno eshjo 4erez reload sovsem zabil pro nego.

Репутация: 1
Всего: 2

пардон что долго не отвечал - тока добрался до форума.
Сегодня - завтра попробую.

Добавлено через 2 минуты и 33 секунды
Alexis,
Я тока начал заниматься этим и что такое ant плохо представляю - не подскажите?

Репутация: 24
Всего: 62

Репутация: 1
Всего: 2

Репутация: 32
Всего: 81

Ссори, что поднимаю старую и решённую тему, нашел ещё вариант к теме
У тега <context . > в конфигурации Контекста выставить атрибут reloadable="true"

Репутация: 1
Всего: 2

  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

[ Время генерации скрипта: 0.1612 ] [ Использовано запросов: 21 ] [ GZIP включён ]

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

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

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

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

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

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

ОТВЕТЫ

Ответ 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

Ответ 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 при каждом развертывании войны.

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

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

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

когда я снова запускаю сервер, он все еще служит старые кода.

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

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

вы можете удалить каталог "работа".

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

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

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

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

  1. отменить развертывание приложения из manager
  2. выключение tomcat с помощью ./shutdown.sh
  3. удалить кэш браузера
  4. удалить приложение из webapps и из /work/Catalina/.
  5. запуск tomcat с помощью ./startup.sh
  6. скопируйте новую версию приложения в /webapps и запустить его.

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

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

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

в моем случае, MySite.Война расширилась до обоих корней и MySite. Мой_сайт обычно подавались. Но иногда tomcat решил, что ему больше нравится корневой, и все мои изменения исчезли.

"решение" является чтобы удалить корневой сайт с каждым развертыванием войны.

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

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

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

Как я могу предотвратить кеширование tomcat? У меня есть CSS и основные HTML-файлы, которые я загружаю и использую через ajax, и, если я не перезапущу tomcat, изменения, похоже, не отразятся. Разные машины, разные браузеры, и я не получаю обновленные файлы.

Возможно, вам придется удалить папку кэша приложения в / work / Catalina / localhost после изменения флага cachingAllowed.

Конфигурация может быть введена в server.xml как

+1 Я совершенно забыл упомянуть об этом в своем первоначальном ответе. Благодарность! Получил предупреждение от Tomcat 8 при запуске: Установка свойства cachingAllowed в false не нашли свойство соответствия. Этот ответ сейчас очень устарел, для всех, кто его читает, и больше не является действительно правильным (для Tomcat 5+)

Для Tomcat 8 / Tomcat 9 свойства должны быть добавлены в conf / context.xml следующим образом

Возможно, вам придется удалить папку кэша приложения в / work / Catalina / localhost после изменения cachingAllowed флага. Также очистите кэш IntelliJ IDEA (если вы используете его для запуска Tomcat):

Посмотрите Apache Tomcat 9 Справочник по конфигурации для других параметров.

antiResourceLocking на <Resources> -Tag определенно не подходит для tomcat 8 Это не правильно для Tomcat 7, либо. Msgstr "Установка свойства 'antiResourceLocking' в 'false' не нашла подходящего свойства." . "При установке свойства 'cachingAllowed' в 'false' не найдено подходящего свойства." @Amalgovinus вы решили свою проблему? У меня такая же проблема в tomcat7, что ты делал?

У меня была эта проблема в Tomcat 7, и причина была в том, что для antiResourceLocking было установлено значение true (звучало как хорошая идея . ).

Обратите внимание, что установка этого значения в true имеет некоторые побочные эффекты, включая отключение перезагрузки JSP на работающем сервере: см. Bugzilla 37668.

В моем случае это даже вызвало кеширование простых статических текстовых файлов.

Итак, в итоге, по крайней мере, для быстрого развития мне пришлось использовать:

Где я могу добавить это точно? Если я помещу в conf / context.xml, это даст мне «не найдено подходящее свойство» для каждого из них .

cacheMaxSize - Максимальный размер статического кеша ресурса в килобайтах. Если не указан, по умолчанию используется значение 10240 (10 мегабайт).

cacheTTL - Количество времени в миллисекундах между повторными проверками записей в кэше. Если не указан, значение по умолчанию составляет 5000 (5 секунд).

cachingAllowed - Если значение этого флага равно true, будет использоваться кэш для статических ресурсов. Если не указан, значение флага по умолчанию - true.

Читайте также: