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?

Foi útil?

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).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top