Документация Tomcat (http://tomcat.apache.org/tomcat-6.0-doc/config/context.html)
Только в том случае, если для приложения отсутствует файл контекста в каталоге $ CATALINA_BASE / conf / [enginename] / [имя хоста] /, в отдельном файле в / META-INF / context.xml внутри файлов приложения. Если веб-приложение упаковано как WAR, то /META-INF/context.xml будет скопировано в $ CATALINA_BASE / conf / [enginename] / [hostname] / и переименовано в соответствии сПуть к контексту приложения. Как только этот файл существует, он не будет заменен, если новая WAR с новым /META-INF/context.xml будет помещена в appBase хоста.
Текст, выделенный жирным шрифтом, ясен. Но я уведомляю, что это не так (мне нужно именно это поведение)
Вот шаги:
- aaa.war с context.xml, включенным в META-INF
- копировать в веб-приложения. Tomcat развертывает. Файл
conf\Catalina\localhost\aaa.xml
ОК - изменить aaa.war, изменив META-INF / context.xml
- копировать в веб-приложения
- Файл
conf\Catalina\localhost\aaa.xml
изменен !!!
Что не так? Это ошибка или hidden функция?
Справочная информация - проблема, которую я хочу решить:
Конфигурация, независимая сборка и установка.Я сажаю военный файл.Клиент настраивает свой Tomcat, используя свои собственные настройки.когда я отправляю новую версию, я просто поставляю войну без конфигурации, и при развертывании она будет использовать специфическую для клиента конфигурацию.
По документации лучшее место - context.xml. Но если он перезаписывается каждый раз, нет смыслаиспользовать на всех.(Зачем мне использовать JNDI и тому подобное, если нужно создать новый результат? Изменение чего-либо во время сборки не является большим преимуществом конфигурации.)
Среда: windows, tomcat 6.0.33