Tomcat не позволяет развернуть военный файл
Я выполнил следующие шаги
- Shutdown Tomcat
- Развернутый военный файл с отметкой 1 декабря
- Запустить Tomcat - Создал взорванный каталог для развернутого файла войны.
- Остановить Tomcat
- Обновлен файл войны с новым с отметкой времени 3 декабря
- Перезапустить Tomcat
Я обнаружил, что когда я перезапустил Tomcat, существующие файлы в папке, которая была расширена ранее, не были обновлены. Не должно ли обновление файла войны обновить соответствующий файл jsp, class?
Я просмотрел документацию и нашел это http://tomcat.apache.org/tomcat-5.5-doc/config/host.html. Следующая цитата в разделе "Автоматическое развертывание приложений"
В дополнение к автоматическому развертывание, которое происходит при запуске вы также можете запросить Файлы конфигурации XML, WAR файлов или подкаталогов, которые зашел в базу приложений (или $CATALINA_HOME/CONF/[ENGINE_NAME]/[имя_хоста] в случае конфигурации XML файл), а Tomcat - бег будет автоматически развернуты, согласно правилам описано выше. Авто развертыватель также будет отслеживать веб-приложения для следующие изменения:
- Обновление для WEB-INF/web.xml файл вызовет перезагрузку сети приложение
- Обновление для WAR который был расширен, undeploy (с удалением расширенный webapp), а затем развертывание
- Обновление для XML файл конфигурации вызовет undeploy (без удаления каких-либо расширенный каталог), а затем развертывание связанной сети приложение
Не должны ли файлы автоматически обновляться в результате пункта 2 выше?
У Autodeploy установлено значение true в server.xml
Ответы
Ответ 1
Исторически, tomcat никогда не обновлял взорванный каталог, когда вы просто бросаете новую банку, по крайней мере для меня. Я всегда считал это ошибкой, но никогда не рассматривал ее, поскольку существует простое решение. Оба они должны работать нормально:
Разверните файл войны с помощью приложения диспетчера сборки. Хорошо, если вы в порядке с использованием графического интерфейса для управления производством. Примечание У этого инструмента были проблемы при развертывании несколько раз (опять же, я никогда не разбирался в деталях), но перезапуск Tomcat работал нормально.
Остановка, удаление и падение. Остановите Tomcat, удалите взорванный каталог, опустите новый файл войны.
Ответ 2
Добавить autoDeploy = true. Работает для меня
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true">
Ответ 3
Я обычно устанавливаю для autodeploy в server.xml значение false. Это позволяет мне отказаться от новой войны и перезагрузить tomcat без необходимости иметь дело с соответствующим каталогом.
Ответ 4
Да, взорванный каталог должен быть обновлен, однако вам не нужно останавливать Tomcat для этого - он будет работать с Tomcat. Можете ли вы попробовать снова, не останавливая Tomcat между обновлением?
Также я использую встроенное приложение-диспетчер, которое позволяет мне обновлять военные файлы в любом месте домена без использования root (или apache или любого другого tomcat). Это очень удобно и может быть встроено в Ant script.
Ответ 5
В моем случае я называю артефакт
ROOT.WAR
но должен быть
ROOT.WAR
Ура!
Ответ 6
Поскольку я использую maven для генерации своих сборок в tomcat внутри Ubuntu Box, у меня есть скрипт с именем
install_wars.sh
Со следующим содержанием:
mvn clean install
service tomcat7 stop
find /var/lib/tomcat7/webapps/ -mindepth 1 -maxdepth 1 -type d -exec rm -rf {} \;
find . -name *.war -exec cp {} /var/lib/tomcat7/webapps/ \;
service tomcat7 start
Вы можете изменить путь и команды maven соответственно.
Остановка/запуск tomcat позволяет избежать утечек памяти, которые могут замедлить работу приложения после нескольких повторных развертываний.