Подтвердить что ты не робот

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

Каков порядок приоритета?

4b9b3361

Ответ 1

Для файлов, которые вы указали, простой ответ, предполагающий, что вы используете все значения по умолчанию, порядок (обратите внимание на conf/Catalina/localhost):

...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml

Я основываю это (и следующее обсуждение) на официальной документации Tomcat 5.5 для Контекстного контейнера,

Итак, если это простой ответ, то какой ответ?

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/ пути в вышеприведенных файлах фактически выводится из "default" conf/server.xml и соответствует <Engine name="Catalina" defaultHost="localhost">. Если ваш server.xml использует разные значения для name и defaultHost в <Engine>, то структура dir, в которой будет выглядеть Tomcat.

Наконец, для части ...tomcat\ перечисленных вами файлов Tomcat использует dir из переменной среды $CATALINA_BASE. Если это не установлено, то он использует каталог из переменной среды $CATALINA_HOME, которая является каталогом установки Tomcat. Мне нравится устанавливать и использовать $CATALINA_BASE, чтобы я не "загрязнял" мою установку Tomcat.

Ответ 2

Мое понимание:

  • tomcat/conf/context.xml - это "default" context.xml, содержимое которого наложено на определения контекста webapp. У моего TC 5 default context.xml почти ничего нет, кроме перечисления web.xml в качестве наблюдаемого ресурса, который поддерживает это понятие.
  • tomcat/Catalina//. xml используется для webapp. Либо он находится здесь вручную, либо взят из вашего веб-приложения во время развертывания... так что это настоящий мастер, который использует TC. Если вы отредактируете эти изменения, будет прочитано следующее начало.
  • tomcat/webapps/myapp/META-INF/context.xml - это скопировано в tomcat/Catalina/при первоначальном развертывании, если вы измените это после первоначального развертывания, я не думаю, что это имеет эффект

Ответ 3

Я не нашел официальной документации, но я заметил, что порядок загрузки:

1 tomcat_home/conf/context.xml
2 tomcat_home/webapps/myapp/META-INF/context.xml

Где # 2 применяется последнее (поэтому его параметры переопределяют все предыдущие, где это применимо).

Я никогда не использовал webapp с именами контекстных файлов (ваш вариант №2).