Как правильно развернуть / переразвернуть войну на Tomcat с помощью maven-tomcat7-plugin? - PullRequest
0 голосов
/ 07 ноября 2018

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

Я пытаюсь развернуть войну в Tomcat по горячим причинам и нахожусь в следующих четырех ситуациях:

Дело 1

Команда развертывания, выполненная из папки проекта:

mvn clean install org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:deploy -P PROFILE_ONE,PROFILE_TWO -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.build.sourceEncoding=UTF-8 -Dcobertura.skip=true -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.reporting.outputEncoding=UTF-8 -Dmaven.tomcat.path=/MY_PATH -Dmaven.tomcat.url=http://localhost:8081/manager/text -Dmaven.tomcat.server=TomcatServer -Dtomcat.password=TOMCAT_USER -Dtomcat.username=TOMCAT_PASSWORD

И apache-tomcat-7.0.91 \ conf \ context.xml со следующими свойствами:

<Context antiResourceLocking="true" antiJARLocking="true">

Результат 1 случая

Кажется, что развертывание работает нормально, но когда я вхожу в приложение, появляется следующая ошибка:

Эта страница не может быть найдена (localhost) Веб-страница для адреса http://localhost:8081/MY_PATH/#/PATH. не найдена ОШИБКА HTTP 404

Дело 2

Та же команда для случая 1, выполненная из папки проекта и apache-tomcat-7.0.91 \ conf \ context.xml без свойств антиблокировки:

<Context>

Случай 2, результат

Развертывание и приложение работают правильно, но когда я пытаюсь выполнить повторное развертывание, с той же командой и добавлением свойства -Dmaven.tomcat.update=true работает неправильно, потому что есть несколько jar-файлов, которые заблокированы, и tomcat не может их удалить. (Это причина, по которой в других случаях я добавляю антиблокирующие свойства)

Дело 3

Та же команда случая 1 выполняется из папки проекта и apache-tomcat-7.0.91 \ conf \ context.xml со следующими свойствами:

<Context antiJARLocking="true">

Случай 3, результат

равно результату случая 2.

Дело 4

Та же команда случая 1 выполняется из папки проекта и apache-tomcat-7.0.91 \ conf \ context.xml со следующими свойствами:

<Context antiResourceLocking="true">

Результат по делу 4

равно результату случая 1.

конец дела

Как видите, моя цель - сначала выполнить развертывание, а затем повторно развернуть то же приложение (с изменениями в папке проекта). Вся информация, которую я нашел, говорит о свойствах антиблокировки, но, как я уже сказал выше, когда я помещаю их в context.xml, приложение, похоже, не работает. Важно сказать, что из-за потребностей проекта я не могу изменить название войны.

РЕДАКТИРОВАТЬ 1

Дело 5

Я также попытался с помощью следующей команды:

mvn clean install -U -P PROFILE_ONE,PROFILE_TWO -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.build.sourceEncoding=UTF-8 -Dcobertura.skip=true -Dmaven.skip.test=true -DskipTests=true -Dmaven.javadoc.skip=true -Dsource.skip=true -Dproject.reporting.outputEncoding=UTF-8 org.apache.tomcat.maven:tomcat7-maven-plugin:2.2:redeploy-only -Dmaven.tomcat.path=/MY_PATH -Dmaven.tomcat.url=http://localhost:8081/manager/text -Dmaven.tomcat.server=TomcatServer -Dtomcat.password=admin -Dtomcat.username=admin

И apache-tomcat-7.0.91 \ conf \ context.xml со следующими свойствами:

<Context antiResourceLocking="true">

Случай 5 Результат КО

равно результату варианта 1.

Почему antiResourceLocking="true" вызывает ошибку результата 1?

1 Ответ

0 голосов
/ 11 ноября 2018

Не следует использовать функции antiResourceLocking и antiJARLocking в соответствии с Tomcat :

antiJARLocking является подмножеством antiResourceLocking, и поэтому, чтобы предотвратить дублирование работы и возможные проблемы, только один из этих атрибутов должен быть установлен в true одновременно.

Там также есть конкретные предупреждения об использовании antiResourceLocking

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

Обратите внимание, что установка этого флага в значение true в приложениях, которые находятся за пределами appBase для хоста (по умолчанию каталог webapps), приведет к удалению приложения при завершении работы Tomcat. Вы, вероятно, не хотите этого делать, поэтому подумайте дважды, прежде чем устанавливать antiResourceLocking = true для веб-приложения, которое находится за пределами appBase для его хоста.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...