Я хотел бы собрать несколько рекомендаций по развертыванию веб-приложения на работающем Tomcat. Недавно мне пришлось описать процесс развертывания нашего веб-приложения, и этот процесс показался довольно запутанным.
Скажем, у нас есть приложение в файле WAR (foo.war), правильно настроенное и не требующее дополнительной настройки. В этом случае процесс развертывания довольно прост:
- Скопируйте файл foo.war в каталог $ CATALINA_HOME / webapps. Если приложение запускается правильно, оно автоматически развернется в каталоге $ CATALINA_HOME / webapps / foo.
Чтобы отменить развертывание приложения:
- Удалите файл foo.war из $ CATALINA_HOME / webapps. Если приложение выгружается правильно, оно будет выгружено, и $ CATALINA_HOME / webapps / foo будет удалено.
Теперь я хочу переопределить некоторые параметры контекста в моем запущенном приложении. Прочитав документы , все что мне нужно сделать:
- Создайте файл context.xml с именем foo.xml
- Скопируйте файл в каталог $ CATALINA_BASE / conf / [enginename] / [hostname] /.
К сожалению, это не сработало: приложение не будет перезагружено. Опытным путем мы выяснили, что единственное работающее решение - это когда файл war развертывается в расположении за пределами $ CATALINA_HOME / webapps.
Кроме того, значения по умолчанию настраиваемых параметров контекста в файле WAR должны быть указаны в файле web.xml, поскольку context.xml в файле WAR не читается, когда существует context.xml снаружи.
Вот простой пример файла foo.xml:
<?xml version='1.0' encoding='utf-8'?>
<Context docBase="/path-to-deployment-directory/foo.war">
<Parameter name="myparam" value="newvalue" override="false"/>
</Context>
Обязательно укажите override = false для параметра, если вы хотите, чтобы 'newvalue' переопределял значение, указанное в WAR-файле web.xml. Это было не очевидно для нас.
Таким образом, чтобы развернуть приложение на работающем Tomcat:
- Создайте файл context.xml с именем foo.xml
- Скопируйте файл в каталог $ CATALINA_BASE / conf / [enginename] / [hostname] /.
- Скопируйте файл foo.war в каталог, указанный в docBase файла foo.xml; приложение будет развернуто автоматически.
Чтобы применить новые параметры контекста:
- Добавьте значения параметров в файл foo.xml и сохраните файл; приложение будет автоматически развернуто.
Чтобы отменить развертывание приложения:
- Удалите файл foo.xml из каталога $ CATALINA_BASE / conf / [enginename] / [hostname] / *
Обратите внимание, что удаление foo.war также будет работать, но также удалит и файл foo.xml.
На данный момент у меня есть следующие вопросы:
- Лучше ли вообще развертывать веб-приложение, не останавливая кота? Я слышал мнение, что развертывание на работающем tomcat никогда не требуется, поскольку люди запускают каждое приложение в отдельном tomcat.
- Является ли хорошей идеей копировать WAR-файлы в $ CATALINA_HOME / webapps или их лучше хранить в отдельном месте?
- Как настроить приложение, развернутое в $ CATALINA_HOME / webapps
- Почему в catalina.out нет строки INFO для развертывания приложения, а есть для отмены развертывания? Это настраивается?