Ich möchte einige Best Practices für die Bereitstellung einer Webanwendung auf einem laufenden Tomcat sammeln. Vor nicht allzu langer Zeit musste ich den Deployment-Prozess unserer Web-Anwendung beschreiben und der Prozess erschien eher verwirrend.
Nehmen wir an, wir haben eine Anwendung in einer WAR-Datei (foo.war) korrekt konfiguriert und benötigen keine zusätzliche Konfiguration. In diesem Fall ist der Bereitstellungsprozess ziemlich einfach:
So deimplementieren Sie die Anwendung:
Jetzt möchte ich einige Kontextparameter in meiner laufenden Anwendung überschreiben. Nachdem ich die Dokumentation gelesen habe, muss ich nur noch Folgendes tun:
Leider hat das nicht funktioniert: Die Anwendung wird nicht neu gestartet. Empirisch fanden wir heraus, dass die einzige funktionierende Lösung ist, wenn die WAR-Datei an einem Ort außerhalb der $ CATALINA_HOME / webapps bereitgestellt wird. Außerdem sollten die Standardwerte der konfigurierbaren Kontextparameter in der WAR-Datei in der Datei web.xml angegeben werden, da context.xml in der WAR-Datei nicht gelesen wird, wenn außerhalb der Datei context.xml ist.
Hier ist ein einfaches Beispiel für die foo.xml:
%Vor%Stellen Sie sicher, dass override = false für den Parameter angegeben wird, wenn der 'newvalue' den in der web.xml der WAR angegebenen Wert überschreiben soll. Das war für uns nicht offensichtlich.
So stellen Sie eine Anwendung auf einem laufenden Tomcat bereit:
Um neue Kontextparameter anzuwenden:
So deimplementieren Sie die Anwendung:
Beachten Sie, dass das Entfernen von foo.war ebenfalls funktioniert, aber auch die Datei foo.xml entfernt.
Inzwischen habe ich folgende Fragen:
Bei Frage (1) eignet sich Tomcat hervorragend für die Bereitstellung von Servlets auf einem laufenden Server. Es könnte Bedenken geben wr.t. Sicherheit oder möglicherweise D.O.S. oder Gründe, warum Sie separate Server-Instanzen haben.
Sie können beliebig flexibel arbeiten, aber es ist oft bequemer, sie auf einem bereits laufenden Server bereitzustellen. Dies ist eine BUILT-IN-Funktion in der Servlet-Architektur. :)
Für (2) ist es wiederum in Ihrem Ermessen, wo Sie WARs setzen möchten. Es hört sich so an, als hättest du schon eine nicht standardmäßige (nicht standardmäßige sollte ich sagen) Art und Weise konfiguriert. Überprüfen Sie Ihre server.xml Datei auf die Einstellungen Ihrer Serverinstanz (en). Suchen Sie nach Attributen wie unpackWARs
und autoDeploy
.
Für (3) und (4) sowie für Ihre (1,2) Fragen empfiehlt es sich, die Tomcat-Dokumente für Ihre Tomcat-Version in ihrem Bereitstellungsmodell zu konsultieren. Sie sollten in der Lage sein, die gleichen Dokumente zu verwenden, um herauszufinden, wie Ihr Server konfiguriert wurde.
Siehe Tomcat Web Application Deployment im Tomcat-Handbuch, das auf Ihre Version von Tomcat abgestimmt ist Tomcat.
Eine Lösung wäre, die Manager-Anwendung zu verwenden. Wenn Sie sich für die sichere Verwendung entscheiden, können Sie Anwendungen einfach bereitstellen, starten, stoppen und deimplementieren:
Es gibt Ameisen-Aufgaben, die Ihnen dabei helfen können.
Ich vermute, aber ich bin mir nicht sicher, ob das Beenden und Starten einer Anwendung dazu führt, dass die context.xml erneut gelesen wird.
In Bezug auf Ihre zweite Frage glaube ich, dass es aus Wartungsgründen besser ist, die Kriegsdateien im webapps-Verzeichnis zu behalten.
Tags und Links configuration tomcat servlets deployment