Tomcat 5.5: .jar не выпускается при восстановлении .war - PullRequest
6 голосов
/ 05 мая 2011

Синопсис

Я пытаюсь экспортировать WAR в мою папку веб-приложений, но каждый раз, когда я обновляю войну, он удаляет все содержимое веб-приложения минус /WEB-INF/lib/struts.jar

Информация о системе

  • Windows 2K3
  • Tomcat 5,5
  • JRE 1.6.23

Хорошо, вот что происходит:

  1. Экспорт проекта в формате .WAR через Eclipse (Helios) в каталог / webapps
  2. Tomcat видит изменения в войне и пытается перестроить веб-приложение
  3. Tomcat удаляет содержимое папки webapp ( / webapps / public )
  4. ( / webapps / public / WEB-INF / lib / struts.jar ) заблокировано, что исключает его удаление.
  5. Tomcat отказывается от перестройки, оставляя меня без папки в папке, кроме struts.jar, что приводит к сбою приложения.

Вопрос (ы)

  • Есть ли способ, чтобы сохранить банку от блокировки?
  • (ИЛИ) лучший процесс развертывания, который я должен использовать (и могу быстро подобрать)?

Использование antiResourceLocking="true" и antiJARLocking="true" на элементе <Context> не решило проблему. Цени любую помощь.

Ответы [ 4 ]

4 голосов
/ 15 июня 2011

Помогает ли добавление unloadDelay в ваш контекст?

Что такое:

Количество мс, что контейнер будет дождитесь выгрузки сервлетов. Если не указано значение по умолчанию флаг 2000 мс.

Источник: http://tomcat.apache.org/tomcat-5.5-doc/config/context.html

Очевидно, что иногда веб-приложение находится в середине большого GC / ClassLoader не был собран сборщиком мусора и не может быть выпущен вовремя. Попробуйте поэкспериментировать с таймаутом, чтобы увидеть, поможет ли это.

Существует также несколько примеров странной блокировки файлов на платформах Windows.

Кроме того, если вы имеете в виду среду разработки (а не производства), посмотрите на один из моих вопросов, демонстрирующий мой подход к средам горячего развертывания Tomcat / Eclipse:

Развертывание Tomcat и Eclipse с нулевым оборотом


Обновление

Эта полезная тема возникла в поиске Google по той же проблеме и упоминается рядом других:

http://blog.exis.com/colin/?s=I+Put+A+Spell+On+You

1 голос
/ 11 июня 2011

Может ли эта тема быть актуальной? Указывает на DTD в файлеiles-config.xml, вызывающий проблемы.

1 голос
/ 10 июня 2011

Полагаю, ваше требование - быстро развернуть и перестроить, учитывая затмение IDE.Как вы уже поняли, экспорт файла war в папку webapps - не лучший вариант.Несколько других вариантов:

a) Использовать плагин sysdeo tomcat - sysdeo развертывает папку проекта

b) Обновить скрипт сборки для развертывания в разобранном формате.- разверните папку \ build как развернутое приложение

Первый вариант самый простой.Второй вариант - более чистый.

[ВЫКЛЮЧЕНА ТЕМА] рассмотрите возможность перехода на tomcat 7

0 голосов
/ 15 июня 2011

Возможно, это не оптимальное решение, но у меня были похожие проблемы с Tomcat 6 до сих пор.В то время, когда я использовал Ant, я написал скрипт Ant, который будет развертываться на Tomcat локально, и в процессе он остановит / запустит Tomcat, где это необходимо (Tomcat был развернут в качестве службы, поэтому я мог использовать NET STOP / NETКоманды СТАРТ ).Это включало удаление старой расширенной папки WAR.

Я думаю, что, возможно, есть лучшие варианты, но это сработало для меня.

...