Развертывание веб-приложения на работающем Tomcat - PullRequest
9 голосов
/ 24 февраля 2009

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

Скажем, у нас есть приложение в файле WAR (foo.war), правильно настроенное и не требующее дополнительной настройки. В этом случае процесс развертывания довольно прост:

  • Скопируйте файл foo.war в каталог $ CATALINA_HOME / webapps. Если приложение запускается правильно, оно автоматически развернется в каталоге $ CATALINA_HOME / webapps / foo.

Чтобы отменить развертывание приложения:

  • Удалите файл foo.war из $ CATALINA_HOME / webapps. Если приложение выгружается правильно, оно будет выгружено, и $ CATALINA_HOME / webapps / foo будет удалено.

Теперь я хочу переопределить некоторые параметры контекста в моем запущенном приложении. Прочитав документы , все что мне нужно сделать:

  1. Создайте файл context.xml с именем foo.xml
  2. Скопируйте файл в каталог $ 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:

  1. Создайте файл context.xml с именем foo.xml
  2. Скопируйте файл в каталог $ CATALINA_BASE / conf / [enginename] / [hostname] /.
  3. Скопируйте файл foo.war в каталог, указанный в docBase файла foo.xml; приложение будет развернуто автоматически.

Чтобы применить новые параметры контекста:

  • Добавьте значения параметров в файл foo.xml и сохраните файл; приложение будет автоматически развернуто.

Чтобы отменить развертывание приложения:

  • Удалите файл foo.xml из каталога $ CATALINA_BASE / conf / [enginename] / [hostname] / *

Обратите внимание, что удаление foo.war также будет работать, но также удалит и файл foo.xml.


На данный момент у меня есть следующие вопросы:

  1. Лучше ли вообще развертывать веб-приложение, не останавливая кота? Я слышал мнение, что развертывание на работающем tomcat никогда не требуется, поскольку люди запускают каждое приложение в отдельном tomcat.
  2. Является ли хорошей идеей копировать WAR-файлы в $ CATALINA_HOME / webapps или их лучше хранить в отдельном месте?
  3. Как настроить приложение, развернутое в $ CATALINA_HOME / webapps
  4. Почему в catalina.out нет строки INFO для развертывания приложения, а есть для отмены развертывания? Это настраивается?

Ответы [ 2 ]

1 голос
/ 01 марта 2009

На вопрос (1) Tomcat отлично работает для развертывания сервлетов на работающем сервере. Там могут быть проблемы с W.r.t. безопасность или, возможно, D.O.S. или предоставление причин, по которым у вас будут отдельные экземпляры сервера.

Вы можете сделать это в любом случае, но зачастую удобнее развертывать на уже работающем сервере. Это встроенная функция в архитектуре сервлета. :)

Для (2), опять же, по вашему усмотрению, вы хотите поставить WAR. Похоже, вы уже настроили его нестандартным (я бы сказал, не по умолчанию) способом. Проверьте файл server.xml на параметры в экземплярах вашего сервера. Проверьте атрибуты, такие как unpackWARs и autoDeploy.

Для вопросов (3) и (4), а также ваших (1,2) вопросов, было бы неплохо проконсультироваться с документацией Tomcat для вашей версии Tomcat по его модели развертывания. Вы должны иметь возможность использовать те же документы, чтобы выяснить, как настроен ваш сервер.

См. Развертывание веб-приложений Tomcat в руководстве по Tomcat, чтобы настроить вашу версию Tomcat.

0 голосов
/ 24 февраля 2009

Одним из решений будет использование приложения менеджера. Если вы решите, что его безопасно использовать, вы можете легко развернуть, запустить, остановить и отменить развертывание приложений:

http://localhost:8080/manager/deploy?path=[context_path] http://localhost:8080/manager/start?path=[context_path] http://localhost:8080/manager/stop?path=[context_path] http://localhost:8080/manager/undeploy?path=[context_path]

Существуют муравьиные задания, которые могут помочь вам в этом.

Я предполагаю, но не знаю наверняка, что остановка и запуск приложения заставит его перечитать context.xml.

Что касается вашего второго вопроса, я считаю, что по причинам обслуживания лучше хранить файлы war в каталоге webapps.

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