Какой файл контекста Tomcat 5 имеет приоритет?
Документация Tomcat гласит:
Места для дескрипторов контекста:
$CATALINA_HOME/ CONF /[enginename]/[имя хоста] /context.xml
$CATALINA_HOME/ WebApps/[webappname]/META-INF/context.xml
На моем сервере у меня есть как минимум 3 файла:
1 ...tomcat/conf/context.xml
2 ...tomcat/Catalina/localhost/myapp.xml
3 ...tomcat/webapps/myapp/META-INF/context.xml
Каков порядок старшинства?
3 ответа
Для файлов, которые вы перечислили, простой ответ при условии, что вы используете все значения по умолчанию, в следующем порядке (обратите внимание на conf/ Catalina / localhost):
...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml
Я основываю это (и последующее обсуждение) на официальной документации Tomcat 5.5 для Context Container.
Так что, если это простой ответ, каков полный ответ?
Tomcat 5.5. будет искать в нескольких других местах для <Context>
элементы, помимо тех, которые вы перечислили (см. официальные документы).
META-INF/context.xml
никогда не откроется, если Tomcat найдет Catalina/localhost/myapp.xml
, Так что, если у вас есть все файлы выше, правильнее будет сказать META-INF/context.xml
не имеет значения, не то, что это самый низкий приоритет.
Если вы говорите <Context override="true" ...>
в вашем Catalina/localhost/myapp.xml
это сделает его наивысшим приоритетом, независимо от conf/context.xml
, То же самое в вашем META-INF\context.xml
до тех пор, пока у вас нет Catalina/localhost/myapp.xml
(см. предыдущий абзац).
Так же /Catalina/localhost/
часть пути в файлах выше на самом деле выходит из "по умолчанию" conf/server.xml
и соответствует <Engine name="Catalina" defaultHost="localhost">
, Если твой server.xml
использует разные значения для name
а также defaultHost
в <Engine>
Это структура dir, где будет выглядеть Tomcat.
Наконец, для ...tomcat\
часть файлов, которые вы перечислили, Tomcat использует каталог из $CATALINA_BASE
переменная окружения. Если это не установлено, то он использует каталог из $CATALINA_HOME
Переменная окружения, которая является каталогом установки Tomcat. Я люблю устанавливать и использовать $CATALINA_BASE
чтобы я не "загрязнил" мою установку Tomcat.
Мое понимание таково:
- tomcat / conf / context.xml - это "default" context.xml, содержимое которого накладывается на определения контекста webapp. Мой контекстный файл TC 5 по умолчанию context.xml почти ничего не содержит, кроме перечисления web.xml в качестве отслеживаемого ресурса, который поддерживает это понятие.
- tomcat/Catalina//. xml используется для веб-приложения. Либо он находится здесь вручную, либо взят из вашего веб-приложения во время развертывания... так что это настоящий мастер, который использует TC. Если вы отредактируете эти изменения, они будут прочитаны при следующем запуске.
- tomcat / webapps / myapp / META-INF / context.xml - это копируется в tomcat/Catalina/ при первоначальном развертывании, если вы измените это после первоначального развертывания, я не думаю, что это будет иметь какое-либо влияние
Я не нашел никакой официальной документации, но соблюдает порядок загрузки:
1 tomcat_home/conf/context.xml
2 tomcat_home/webapps/myapp/META-INF/context.xml
Где № 2 - последний примененный (поэтому его настройки переопределяют все предыдущие, где это применимо).
Я никогда не использовал веб-приложение именованных контекстных файлов (ваш вариант № 2).