2008-11-26 4 views
17

Tomcat documentation sagt:Welche Tomcat 5-Kontextdatei hat Vorrang?

Die Standorte für Kontextdeskriptoren sind;

$ CATALINA_HOME/conf/[Modulname]/[hostname] /context.xml
$ CATALINA_HOME/webapps/[WebAppName] /META-INF/context.xml

Auf meinem Server habe ich zumindest 3 Dateien im Umlauf:

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

Was die Rangordnung ist?

Antwort

31

Für die Dateien aufgelistet, die einfache Antwort vorausgesetzt, Sie alle Standardeinstellungen verwenden, wird der Auftrag (man beachte die conf/Catalina/localhost):

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

ich diese stützen (und die folgende Diskussion) über die Tomcat 5.5 official documentation for the Context Container.

Also wenn das die einfache Antwort ist, was ist die vollständige Antwort?

Tomcat 5.5. wird in ein paar anderen Orten nach <Context> Elementen suchen, die über die von Ihnen aufgelisteten hinausgehen (siehe die offiziellen Dokumente).

Die META-INF/context.xml wird nie geöffnet, wenn Tomcat eine Catalina/localhost/myapp.xml findet. Also, wenn Sie tatsächlich alle oben genannten Dateien haben, ist es richtig zu sagen, dass die META-INF/context.xml ist irrelevant, nicht, dass es die niedrigste Priorität ist.

Wenn Sie <Context override="true" ...> in Ihrem Catalina/localhost/myapp.xml sagen, dass es den höchsten Vorrang machen, unabhängig davon, conf/context.xml.Das Gleiche gilt für Ihre META-INF\context.xml, solange Sie keine Catalina/localhost/myapp.xml haben (siehe vorherigen Absatz).

Auch der /Catalina/localhost/ Teil des Pfades in den Dateien oben kommt tatsächlich aus der "Standard" conf/server.xml und entspricht der <Engine name="Catalina" defaultHost="localhost">. Wenn server.xml unterschiedliche Werte für name und defaultHost in <Engine> verwendet, ist dies die Verzeichnisstruktur, in der Tomcat aussehen wird.

Schließlich verwendet Tomcat für den ...tomcat\-Teil der Dateien, die Sie aufgelistet haben, das Verzeichnis aus der Umgebungsvariablen $CATALINA_BASE. Wenn das nicht festgelegt ist, verwendet es das Verzeichnis aus der $CATALINA_HOME Umgebungsvariable, die das Verzeichnis der Tomcat-Installation ist. Ich setze und verwende gerne $CATALINA_BASE, damit ich meine Tomcat-Installation nicht "verschmutze".

+0

Wow, eine sehr detaillierte und beeindruckende Antwort. Vielen Dank. – Ittai

0

Ich habe keine offizielle Dokumentation, aber ich habe die Ladereihenfolge zu beachten:

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

Wo # 2 die letzte (so seine Einstellungen außer Kraft setzen alle vorherigen, wo zutreffend) angewendet wird, .

Ich habe nie die Webapp namens Kontextdateien (Ihre Option # 2) verwendet.

1

Mein Verständnis ist:

  • tomcat/conf/context.xml ist die "default" context.xml, deren Inhalt mit den Webapp Kontextdefinitionen überschichtet. Meine TC 5-Standard-Context.xml enthält fast nichts anderes als die web.xml als überwachte Ressource aufzulisten, was diese Vorstellung unterstützt.
  • tomcat/Catalina // .xml wird für die Webapp verwendet. Entweder ist es hier manuell platziert, oder es wird von der Webapp zur Bereitstellungszeit genommen ... also ist dies der echte Master, den TC verwendet. Wenn Sie diese Änderungen bearbeiten, wird der nächste Start gelesen.
  • tomcat/webapps/myapp/META-INF/context.xml - das zu tomcat/Catalina/auf Erstbereitstellung kopiert wird, wenn Sie diese nach dem ersten Einsatz verändern, ich glaube nicht, dass hat keine Auswirkungen
Verwandte Themen