Das Tomcat 6.0-Dokument unter Ссылка lautet:
Nur wenn eine Kontextdatei nicht für die Anwendung in
$CATALINA_BASE/conf/[enginename]/[hostname]/
existiert, in einer einzelnen Datei in/META-INF/context.xml
in den Anwendungsdateien. Wenn die Webanwendung als WAR verpackt ist, wird/META-INF/context.xml
nach$CATALINA_BASE/conf/[enginename]/[hostname]/
kopiert und umbenannt, um dem Kontextpfad der Anwendung zu entsprechen. Sobald diese Datei existiert, wird sie nicht ersetzt, wenn eine neue WAR mit einem neueren/META-INF/context.xml
in der appBase des Hosts platziert wird.
Ich habe jedoch festgestellt, dass das Verzeichnis context.xml
in META-INF
das Verzeichnis context.xml
in $CATALINA_BASE/conf/[enginename]/[hostname]
ersetzt, wenn Sie eine neue WAR-Datei in das WebApp-Verzeichnis einfügen.
Gibt es eine Konfiguration, die sicherstellt, dass context.xml
in $CATALINA_BASE/conf/[enginename]/[hostname]/
nicht überschrieben wird, wenn eine neue WAR-Datei bereitgestellt wird.
Bearbeiten: Ich benutze autodeploy="true" Aus dem Kommentar von JoseK verstehe ich, wenn Tomcat neue WAR-Datei sieht, alte Anwendung entlädt (was zum Löschen der Kontextdatei führt) und die die neue WAR-Datei (die zur Erstellung einer neuen WAR-Datei führt). In diesem Fall ist die obige Information aus dem Tomcat-Dokument nicht relevant. Die neue Frage kann da irgendeine Situation sein, in der das oben genannte Ding passieren kann?
Ich stimme zu, dass die Dokumentation irreführend ist. Normalerweise ist dieses Verhalten tatsächlich willkommen, da Sie bei der Bereitstellung einer neuen Version Ihrer Anwendung die aktualisierte Datei context.xml ebenfalls bereitstellen möchten. Wenn Sie Ihre context.xml-Datei manuell auf Ihrem Produktionsserver bearbeiten möchten, sollten Sie sie komplett überspringen und den Inhalt in die Datei conf / server.xml kopieren.
Ein schneller Patch / eine schnelle Lösung für Ihr Problem (würde ich selbst nicht machen) besteht darin, die context.xml-Datei als readonly zu markieren, nachdem sie zum ersten Mal bereitgestellt und aktualisiert wurde. Auf diese Weise kann Tomcat es nicht löschen / aktualisieren.
Wenn Sie vermeiden möchten, dass 'context.xml' überschrieben wird, können Sie zur Tomcat Manager-URL gehen und dann deinstallieren Sie die vorherige App und installieren Sie das neue Krieg / Ohr. Auf diese Weise haben Sie mehr Kontrolle über den Installationsprozess.