Какой файл контекста 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).

Другие вопросы по тегам