Qual arquivo de contexto do Tomcat 5 tem precedência?

A documentação do Tomcat diz:

Os locais para descritores de contexto são;

$ CATALINA_HOME / conf / [nome do mecanismo] / [hostname] /context.xml
$ CATALINA_HOME / webapps / [webappname] /META-INF/context.xml

No meu servidor, tenho pelo menos três arquivos por aí:

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

Qual é a ordem de precedência?

Para os arquivos que você listou, a resposta simples supondo que você esteja usando todos os padrões, a ordem é (observe o conf / Catalina / localhost):

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

Eu estou baseando isso (e a discussão a seguir) na documentação oficial do Tomcat 5.5 para o Contêiner de Contexto .

Então, se essa é a resposta simples, qual é a resposta completa?

Tomcat 5.5. irá procurar em alguns outros lugares por elementos além daqueles que você listou (veja os documentos oficiais).

O META-INF/context.xml nunca será aberto se o Tomcat encontrar um Catalina/localhost/myapp.xml . Então, se você realmente tem todos os arquivos acima, é mais correto dizer que o META-INF/context.xml é irrelevante , não que seja a menor precedência.

Se você disser em seu Catalina/localhost/myapp.xml isso fará com que tenha a maior precedência, independentemente de conf/context.xml . A mesma coisa em seu META-INF\context.xml , desde que você não tenha um Catalina/localhost/myapp.xml (veja o parágrafo anterior).

Além disso, o /Catalina/localhost/ parte do caminho nos arquivos acima, na verdade, sai do “default” conf/server.xml e corresponde ao . Se seu server.xml usar valores diferentes para name e defaultHost no , essa é a estrutura do diretório em que o Tomcat será defaultHost .

Finalmente, para a parte ...tomcat\ dos arquivos que você listou, o Tomcat usa o dir da variável de ambiente $CATALINA_BASE . Se isso não estiver configurado, ele usará o dir da variável de ambiente $CATALINA_HOME , que é o diretório da instalação do Tomcat. Eu gosto de definir e usar $CATALINA_BASE para que eu não “polua” minha instalação do Tomcat.

Meu entendimento é:

  • O tomcat / conf / context.xml é o context.xml “padrão” cujo conteúdo é sobreposto com as definições de contexto do webapp. Meu context.xml padrão do TC 5 não tem quase nada, além de listar o web.xml como um recurso observado, que suporta essa noção.
  • tomcat / Catalina //. xml é usado para o webapp. Ou ele é colocado aqui manualmente ou é retirado de seu aplicativo da Web no momento da implementação … portanto, esse é o mestre real que o TC usa. Se você editar, essas alterações serão lidas no próximo início.
  • tomcat / webapps / myapp / META-INF / context.xml – isso é copiado para o tomcat / Catalina / após a implantação inicial, se você alterar isso após a implantação inicial, não acho que tenha algum efeito

Não encontrei nenhuma documentação oficial, mas observei que a ordem de carregamento é:

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

Onde # 2 é o último aplicado (então suas configurações substituem todas as anteriores, quando aplicável).

Eu nunca usei o webapp chamado arquivos de contexto (sua opção # 2).