2 Stimmen

Hinzufügen neuer Jar-Dateien zur Webanwendung ohne Neustart

Ich habe eine Java EE Webanwendung, die auf einem 2-Knoten-Cluster von WAS 7.0. läuft. Diese Webanwendung enthält mehrere Jar-Dateien, wobei jede Jar-Datei eine Liste von Hilfsprogrammen enthält. Möglicherweise füge ich in Zukunft neue Jar-Dateien zu dieser Webanwendung hinzu. Wir möchten keine Ausfallzeiten dieser Webanwendung, wenn wir neue Jars hinzufügen.

Ist es möglich, neue Jar-Dateien zur Webanwendung hinzuzufügen, ohne sie neu zu starten? Werden die Änderungen sofort wirksam?

Wie aktualisiere ich eine bereits vom Classloader geladene vorhandene Jar-Datei? Ist es möglich, dies ohne Neustart zu tun?

Ich habe etwas über etwas namens Hot Deployment in WAS gelesen. Sie haben erwähnt, dass Hot Deployment auf den Betriebssystemen Solaris und HP-UX nicht funktioniert.

Könnten Sie bitte die besten Möglichkeiten vorschlagen, dieses Problem anzugehen?

2voto

Brett Kail Punkte 33138

Ist es möglich, neue Jar-Dateien zur Webanwendung hinzuzufügen, ohne sie neu zu starten? Werden die Änderungen sofort wirksam?

Nein, es ist nicht möglich, neue JARs zum Klassenladen hinzuzufügen, ohne die Anwendung neu zu starten. Selbst wenn Sie später ein leeres JAR erstellen und ersetzen, gibt es keine Möglichkeit, dass die Änderungen ohne Ausfallzeit wirksam werden: mindestens das Modul wird weiterhin neu gestartet.

Wie kann ich eine vorhandene JAR-Datei aktualisieren, die bereits vom Klassenladen geladen ist? Ist es möglich, dies ohne Neustart zu tun?

Das geht nicht, es ist nicht möglich.

Ich habe etwas über Hot Deployment in WAS gelesen. Sie haben erwähnt, dass Hot Deployment auf den Betriebssystemen Solaris und HP-UX nicht funktioniert.

Das Hot Deployment ermöglicht den Klassenersatz (aber nicht die gesamten JARs) ohne Ausfallzeit.

Weitere Optionen:

  • Verwenden Sie eine Routentechnologie (HTTP-Proxy, WVE) und starten Sie die Anwendung nacheinander neu (d.h. starten Sie die Anwendung auf einem Clustermitglied nach dem anderen neu und leiten Sie den Zwischenverkehr in der Zwischenzeit zum anderen Server um).
  • Verwenden Sie etwas wie JRebel. Meiner Meinung nach ist es hauptsächlich für Entwicklungsumgebungen gedacht, aber es könnte auch für die Produktion unterstützt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X