Ich entwickle eine webbasierte Java-Anwendung bei der Arbeit und muss sie (offensichtlich) während der Entwicklung lokal ausführen. Ich habe die Tomcat-Dokumente herausgefunden und habe eine passende context.xml-Datei darin, /etc/tomcat6/Catalina/localhost/
aber Tomcat beschließt von Zeit zu Zeit, sie zu löschen! Das heißt, ich muss es zurücksetzen und Tomcat neu starten.
Warum macht es das? Ich habe in den Tomcat-Dokumenten nach Informationen gesucht und bin nicht klüger.
(Oh ja: Es wird eigentlich nicht aufgerufen, context.xml
aber owners.xml
da dies das HTTP-Pfadpräfix für diese Anwendung ist.)
Aktualisieren
Ich habe jetzt gesehen, wie Tomcat die Datei löschte, während Tomcat lief . Ich glaube, ich muss einen Fehler melden ...
Antworten:
Kurzzusammenfassung : Es gibt verschiedene Bedingungen (z. B. Ändern der War-Datei, Löschen der Webanwendung oder Ersetzen durch neuen Inhalt), unter denen Tomcat die Bereitstellung des Kontexts aufhebt, einschließlich des Entfernens der Kontextdatei.
Details : Ob Tomcat AutoDeployment durchführt oder nicht (dies bedeutet, dass Sie nach Änderungen in Ihrem XML-Deskriptor suchen und Änderungen im Webapp-Verzeichnis überprüfen), hängt von folgenden Faktoren ab:
server.xml im Abschnitt $ CATALINA_HOME / conf / server.xml:
<Hostname = "localhost" appBase = "webapps" unpackWARs = "true" autoDeploy = "true" xmlValidation = "false" xmlNamespaceAware = "false">
Sie können diese Eigenschaft auch in Ihrer Kontextdatei festlegen, um den Wert zu überladen
Das Zitieren des Dokuments für Fälle, in denen autoDeploy = true ist, kann zum Entfernen Ihrer Kontextdatei führen:
Ausführliche Details : http://tomcat.apache.org/tomcat-6.0-doc/config/host.html#Automatic%20Application%20Deployment
quelle
Wenn Sie beispielsweise in Produktionsumgebungen keine AutoDeploy- Funktion wünschen , können Sie die folgenden Attribute in der Kontextdatei conf / Catalina / localhost berücksichtigen:
autoDeploy = "false" funktioniert möglicherweise nicht alleine, da die Datei context.xml (in META-INF) die server.xml-Einstellungen von autoDeploy überschreiben kann.
Dokumentation der deployXML-Attribute Die Dokumentation der Attribute ist lesenswert (§ Standardimplementierung).
Erschöpfender AutoDeploy Benutzer Fall und wenn der Kontext entfernt wird : dh Anwendung nicht entfalteten, wird der Benutzer Fall dokumentiert findet sich hier .
quelle
Kann das Warum- Bit nicht beantworten .
Allerdings Dieser Link erklärt Sie können dies ausschalten , indem Sie die Einstellung
autoDeploy="false"
inserver.xml
quelle
Ich weiß ehrlich gesagt nicht, was der Grund dafür ist, dass Tomcat dies tut, aber versuchen Sie, Ihrem Kontextelement das folgende XML-Attribut hinzuzufügen
Ihr Kontext könnte also so aussehen:
Dies sollte Tomcat davon abhalten, die Datei zu löschen
quelle
Mir ist klar, dass dies ein alter Thread ist, aber ich dachte, ich würde teilen, was ich gefunden habe, um dieses Problem zu beheben ...
Ich hatte genau das gleiche Problem mit meiner context.xml-Datei für meine Desktop-Version von Tomcat, die jedes Mal, wenn ich eine neue Kopie der War-Datei für meine Anwendung bereitstellte, überlastet wurde.
Das Problem lag daran, dass ich Änderungen an dieser Datei direkt im Dateisystem vorgenommen habe. Das Problem wurde behoben, indem die Datei context.xml über meinen Eclipse-Editor bearbeitet wurde. In meiner Eclipse gibt es ein "Server" -Projekt, in dem nach dem Erweitern eine Handvoll Dateien angezeigt werden, z. B. context.xml und server.xml. Wenn Sie die Dateien von hier aus ändern, anstatt in das Dateisystem zu wechseln, werden Ihre Änderungen anscheinend beibehalten.
Ich habe diese Lösung in folgendem Thread gefunden: https://www.liferay.com/community/forums/-/message_boards/message/16511799
Ich hoffe das hilft jemand anderem!
-StephenS
quelle
Das allgemeine Problem, wie es im Titel beschrieben wird, wird durch die erneute Bereitstellung aus dem Krieg abgedeckt, ohne den Kontext zu löschen, der zu diesem Zeitpunkt immer noch ein offenes Problem darstellt.
Es gibt einen anerkannten Unterschied zwischen der erneuten Bereitstellung, bei der der Kontext nicht gelöscht wird, und der Bereitstellung nach der Nichtbereitstellung, bei der die Nichtbereitstellung den Kontext löscht. Die Dokumentation war veraltet und die Manager-GUI unterstützt die erneute Bereitstellung immer noch nicht.
quelle
Manchmal ist es notwendig, unterschiedliche Werte für die App auf dem Server zu haben, zum Beispiel einen Pfad zum Speichern hochgeladener Dateien. In der Entwicklerumgebung haben wir ungefähr Folgendes:
Im Server ist der Pfad jedoch anders:
Ich habe auch das gleiche Problem, Tomcat Löschen der context.xml (meapp.xml) aus conf / Catalina / localhost
Zur Lösung verwende ich context.xml.default und erstelle im selben Pfad eine Datei mit dem Namen context.xml.default und in einer Put-Konfiguration, die ich behalten möchte:
Wenn Sie also die App erneut implementieren, bleiben die confir-Parameter erhalten.
quelle