Qual arquivo Tomcat 5 contexto tem precedência?
-
11-07-2019 - |
Pergunta
Tomcat documentação diz:
Os locais para os 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, eu tenho arquivos pelo menos 3 flutuando:
1 ...tomcat/conf/context.xml
2 ...tomcat/Catalina/localhost/myapp.xml
3 ...tomcat/webapps/myapp/META-INF/context.xml
O que é a ordem de precedência?
Solução
Para os arquivos que você listou, a resposta simples, supondo que você está usando todos os padrões, a ordem é (note o conf / Catalina / localhost):
...tomcat/conf/context.xml
...tomcat/conf/Catalina/localhost/myapp.xml
...tomcat/webapps/myapp/META-INF/context.xml
Eu estou baseando essa (e discussão a seguir) na Tomcat 5.5 documentação oficial para o Contexto Container .
Então, se essa é a resposta simples, o que é a resposta completa?
Tomcat 5.5. vai olhar em um par de outros lugares para elementos <Context>
além daqueles que você listou (ver os documentos oficiais).
O META-INF/context.xml
nunca será aberto se Tomcat encontra um Catalina/localhost/myapp.xml
. Então, se você realmente tem todos os arquivos acima, é mais correto dizer a do META-INF/context.xml
é irrelevante , não que seja o menor precedência.
Se você disser <Context override="true" ...>
em sua Catalina/localhost/myapp.xml
que irá torná-lo o maior precedência, independentemente de conf/context.xml
. A mesma coisa em sua META-INF\context.xml
, contanto que você não tem um Catalina/localhost/myapp.xml
(ver parágrafo anterior).
Além disso, a parte /Catalina/localhost/
do caminho nos arquivos acima realmente sai do conf/server.xml
"default" e coincide com o <Engine name="Catalina" defaultHost="localhost">
. Se o seu server.xml
usa valores diferentes para name
e defaultHost
na <Engine>
, que é a estrutura dir onde Tomcat vai olhar.
Finalmente, para a parte ...tomcat\
dos arquivos que você listou, Tomcat usa o dir da variável de ambiente $CATALINA_BASE
. Se isso não for definido, então ele usa o dir da variável de ambiente $CATALINA_HOME
, que é o diretório de instalação do Tomcat. Eu gosto de definir e utilizar $CATALINA_BASE
para que eu não "poluir" minha instalação do Tomcat.
Outras dicas
O meu entendimento é:
- tomcat / conf / context.xml é o context.xml "default", cujo conteúdo está coberto com as definições de contexto webapp. Meu TC 5 context.xml padrão tem quase nada nele, além listando o web.xml como um recurso assistiu, que suporta esta noção.
- tomcat / Catalina //. Xml é usado para o webapp. Ou é lugar aqui manualmente, ou é retirado do seu webapp no momento da implementação ... então este é o verdadeiro mestre que usa TC. Se você editar estas mudanças serão lidos próxima partida.
- tomcat / webapps / myapp / META-INF / context.xml - este é copiado para tomcat / Catalina / em cima implantação inicial se você alterar este após a implantação inicial, eu não acho que tem qualquer efeito
Eu não encontrei qualquer documentação oficial, mas tenho observado a ordem de carregamento a ser:
1 tomcat_home/conf/context.xml
2 tomcat_home/webapps/myapp/META-INF/context.xml
Onde # 2 é o último aplicado (para suas configurações substituem todas as anteriores, quando aplicável).
Eu nunca usei a aplicação web chamado arquivos de contexto (sua opção # 2).