Bereitstellung der Webanwendung auf einem laufenden Tomcat

9

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:

  • Kopieren Sie die Datei foo.war in das Verzeichnis $ CATALINA_HOME / webapps. Wenn die Anwendung ordnungsgemäß gestartet wird, wird die Anwendung automatisch im Verzeichnis $ CATALINA_HOME / webapps / foo bereitgestellt.

So deimplementieren Sie die Anwendung:

  • Entfernen Sie die Datei foo.war aus den $ CATALINA_HOME / webapps. Wenn die Anwendung korrekt entladen wird, wird sie entladen und die $ CATALINA_HOME / webapps / foo wird entfernt.

Jetzt möchte ich einige Kontextparameter in meiner laufenden Anwendung überschreiben. Nachdem ich die Dokumentation gelesen habe, muss ich nur noch Folgendes tun:

  1. Erstellen Sie eine context.xml-Datei namens foo.xml
  2. Kopieren Sie die Datei in das Verzeichnis $ CATALINA_BASE / conf / [engine_name] / [hostname] /.

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:

  1. Erstellen Sie eine context.xml-Datei namens foo.xml
  2. Kopieren Sie die Datei in das Verzeichnis $ CATALINA_BASE / conf / [engine_name] / [hostname] /.
  3. Kopieren Sie foo.war an den Ort, der in der docBase von foo.xml angegeben ist; Die Anwendung wird automatisch bereitgestellt.

Um neue Kontextparameter anzuwenden:

  • Fügen Sie die Parameterwerte zur Datei foo.xml hinzu und speichern Sie die Datei. Die Anwendung wird automatisch neu bereitgestellt.

So deimplementieren Sie die Anwendung:

  • Entfernen Sie die Datei foo.xml aus dem Verzeichnis $ CATALINA_BASE / conf / [Modulname] / [Hostname] /

Beachten Sie, dass das Entfernen von foo.war ebenfalls funktioniert, aber auch die Datei foo.xml entfernt.

Inzwischen habe ich folgende Fragen:

  1. Ist es eine Best-Practice überhaupt, eine Web-Anwendung zu implementieren, ohne den Tomcat zu stoppen? Ich hörte eine Meinung, dass die Bereitstellung auf einem laufenden Tomcat nie benötigt wird, da die Leute jede Anwendung in einem separaten Tomcat ausführen.
  2. Ist es eine gute Idee, WAR-Dateien in $ CATALINA_HOME / webapps zu kopieren oder sie sollten lieber an einem anderen Ort aufbewahrt werden?
  3. Wie kann ich eine Anwendung konfigurieren, die für $ CATALINA_HOME / webapps
  4. bereitgestellt wird?
  5. Warum gibt es in der catalina.out keine INFO-Zeile für die Bereitstellung einer Anwendung und gibt es eine für die Deimplementierung? Ist es konfigurierbar?
newtover 24.02.2009, 11:33
quelle

2 Antworten

1

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.

    
popcnt 01.03.2009 06:07
quelle
0

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.

    
kgiannakakis 24.02.2009 12:15
quelle