2012-03-06 2 views
5

Tomcat документация (http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)Tomcat обновления context.xml но не должен

Только если контекст файл не существует для приложения в файле $ CATALINA_BASE/conf/[enginename]/[hostname]/в отдельном файле в файле /META-INF/context.xml внутри файлов приложения. Если приложение web упаковано в качестве WAR, то /META-INF/context.xml будет скопирован в $ CATALINA_BASE/conf/[enginename]/[hostname]/и переименован в в соответствие с контуром контекста приложения. Как только этот файл существует, он будет заменен на , если новая версия WAR с новым /META-INF/context.xml равна , размещенному в базе приложений хоста.

Текст выделен полужирным шрифтом. Но я уведомляю вас как неправду. (Мне нужно именно такое поведение)

Вот шаги:

  1. aaa.war с context.xml включенные в META-INF
  2. копию WebApps. развертывание tomcat. Файл conf\Catalina\localhost\aaa.xml OK
  3. изменения aaa.war путем изменения META-INF/context.xml
  4. копию WebApps
  5. Файл conf\Catalina\localhost\aaa.xml изменен !!!

Что не так? Это ошибка или скрытая функция?

фон - вопрос, я хочу, чтобы решить:

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

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

среды: окна, TOMCAT 6.0.33

+0

Аналогичная проблема: http://stackoverflow.com/questions/4158468/tomcat-context-management – takacsot

+0

Ответ уже представлен на этом сайте: http://stackoverflow.com/questions/7142365/how-to-provide-a -context-конфигурация-для-а-веб-приложения-под-кот – takacsot

ответ

6

Я сталкиваются с той же проблемой, и документация по крайней мере неадекватна, если не вводить в заблуждение.

Проблема заключается в том, что если вы скопируете новую версию уже развернутого WAR-файла в каталог webapps, Tomcat не будет повторно развертывать существующее приложение, а не развертывать старое приложение, а затем развертывать новое приложение. Вначале разница может показаться незначительной, но проблема заключается в том, что во время развертывания старого приложения любые файлы контекста в conf/Catalina/localhost также удаляются. Затем новый файл контекста из текущего файла WAR будет скопирован в conf/Catalina/localhost во время развертывания нового приложения.

Единственным возможным решением, которое я нашел, является не развертывание нового приложения в качестве файла WAR, а замена или перезапись расширенного каталога, например. не копировать aaa.war в webapps /, но распаковывать aaa.war непосредственно в webapps/aaa /.

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