Какой файл контекста Tomcat 5 имеет приоритет? - PullRequest
17 голосов
/ 27 ноября 2008

Документация 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 ]

32 голосов
/ 27 ноября 2008

Для файлов, которые вы перечислили, простой ответ при условии, что вы используете все значения по умолчанию, в следующем порядке (обратите внимание на 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 использует dir из переменной окружения $CATALINA_BASE. Если он не установлен, то он использует каталог dir из переменной среды $CATALINA_HOME, которая является каталогом установки Tomcat. Мне нравится устанавливать и использовать $CATALINA_BASE, чтобы не "загрязнять" мою установку Tomcat.

1 голос
/ 27 ноября 2008

Насколько я понимаю:

  • 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 / при первоначальном развертывании если вы измените это после первоначального развертывания, я не думаю, что оно эффект
0 голосов
/ 27 ноября 2008

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

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

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

Я никогда не использовал именованные контекстные файлы веб-приложения (ваш вариант # 2).

...