2011-01-05 2 views
27

Я последовал за следующие шагиTomcat не autodeploying войны файла

  • Shutdown Tomcat
  • Развернутым военный файл с отметкой времени 1-го декабря
  • Start Tomcat - Это создал разобранном каталог для развертывания войны файла ,
  • Stop Tomcat
  • Обновленный архив войны с новым с отметкой времени 3-го декабря
  • Restart Tomcat

я обнаружил, что, когда я перезагрузки Tomcat, существующие файлы в папке, которая была расширена ранее не были обновлены. Не должно ли обновление файла войны обновить соответствующий файл jsp, class?

Я просмотрел документацию и нашел это http://tomcat.apache.org/tomcat-5.5-doc/config/host.html. Следующая цитата в разделе «Автоматическое развертывание приложений»

В дополнение к автоматическому развертывания, которое происходит при запуске время, вы также можете запросить новые конфигурационные файлы XML, WAR файлы или подкаталоги, которые упали в к appBase (или
$ CATALINA_HOME/CONF/[ENGINE_NAME]/[имя_хоста] в случае конфигурации XML файла ) каталога, а Tomcat является работает автоматически будет развернуты в соответствии с правилами описывают d выше. Авто Установщик будет также отслеживать веб-приложений для следующие изменения:

  • обновление к/web.xml файл WEB-INF вызовет перезагрузку веб-приложений
  • Обновление к WAR , который был расширен вызовет в Undeploy (с удалением расширенной веб-приложение), а затем развертывания
  • обновление в файл конфигурации XML вызоветUndeploy (без удаления любого расширенного каталога), а затем развертывания соответствующего веб-приложения

не должны файлы были автоматически обновлены в результате пункта 2 выше?

Autodeploy установлена ​​истина в server.xml

ответ

30

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

  • Разверните файл войны с помощью встроенного приложения диспетчера. Хорошо, если вы в порядке с использованием графического интерфейса для управления производством. Примечание У этого инструмента были проблемы при развертывании несколько раз (опять же, я никогда не разбирался в деталях), но перезапуск Tomcat работал нормально.
  • Стоп, удаление и падение. Остановите Tomcat, удалите взорванный каталог, опустите новый файл войны.
  • +0

    +1 То же самое здесь. Я принял второе решение, просто сделайте скрипт для этого. – leonbloy

    +0

    Я использую второй подход, но не удаляя взорванный каталог. Thats бит, который не работает: 0 – ziggy

    +7

    Tomcat объясняет это с помощью этого параграфа: «Любой файл архива веб-приложения в каталоге базы приложений (appBase), у которого нет соответствующего каталога с тем же именем (без расширения« .war ») будет автоматически расширяться, если для свойства unpackWARs не установлено значение false. Если вы повторно развернете обновленный WAR-файл, обязательно удалите расширенный каталог при перезапуске Tomcat, чтобы обновленный файл WAR был повторно расширен (обратите внимание, что авторазвертывание , если он включен, автоматически расширит обновленный WAR-файл после удаления ранее расширенного каталога). « –

    1

    Да взорванный каталог должен быть обновлен, однако вы не должны остановить Tomcat для этой работы - он будет работать с Tomcat бега , Можете ли вы попробовать снова, не останавливая Tomcat между обновлением?

    Также я использую встроенное приложение диспетчера, которое позволяет мне обновлять военные файлы в любом месте домена без использования root (или apache или любого другого tomcat). Это очень удобно и может быть встроено в скрипт Ant.

    +2

    У нас нет приложений администратора или администратора, установленных в производственных средах, поэтому все это делается с помощью скрипта. Я согласен с тем, что взорванная папка должна быть обновлена. Интересно, вызывает ли это факт, что я отключил tomcat. – ziggy

    5

    Обычно я устанавливаю autodeploy в server.xml равным false. Это позволяет мне отказаться от новой войны и перезагрузить tomcat без необходимости иметь дело с соответствующим каталогом.

    6

    Добавить autoDeploy = true. Работы для меня

    <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
    
    +0

    Посмотрите, как элемент XML. К какому файлу следует добавить это? –

    +3

    Редактировать server.xml в каталоге tomcat conf и там он –

    1

    В моем случае я назвал артефакт

    ROOT.WAR 
    

    , но должно быть

    ROOT.war 
    

    Ура!

    0

    Как я использую Maven для создания моей сборки в котом внутри коробки Ubuntu, у меня есть сценарий под названием

    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 команд соответственно.

    Конец остановки/старта, чтобы избежать утечек памяти, которые могут замедлить работу приложения после нескольких перераспределений.

    Смежные вопросы