3 Stimmen

Jetty soll bei einer Änderung der Webapp neu laden, nicht bei einer Änderung der context.xml

Ich habe Jetty mit einer context.xml laufen:

<?xml version="1.0"  encoding="ISO-8859-1"?>
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd">
<Configure class="org.eclipse.jetty.webapp.WebAppContext">
      <Set name="war">path/to/webapp</Set>
      <Set name="contextPath">/</Set>
</Configure>

(Der Pfad ist nicht Standard.) Die Webapp wird bei jeder Änderung neu erstellt, aber ich muss immer noch einen Schreibzugriff auf die context.xml vortäuschen, damit Jetty die Webapp neu lädt.

Gibt es eine Möglichkeit, Jetty anzuweisen, die Webapp bei Änderungen neu zu laden?

0 Stimmen

Ich habe diese Frage gefunden, weil ich mich genau das Gleiche frage. Jasper hast du herausgefunden, wie man das macht?

0 Stimmen

Ich wäre auch sehr an einer Lösung interessiert (die weder Eclipse noch eine andere schwergewichtige 3rd-Party-Anwendung erfordert).

0 Stimmen

Bisher habe ich noch keine Lösung gefunden.

1voto

Riyad Kalla Punkte 10424

Jasper,

Ich habe einen Weg gefunden, dies zu bewerkstelligen (Dank an diese Frage ). Wenn Sie Jetty im Debug-Modus ausführen und den Eclipse-Debugger damit verbinden, wird die VM die Klassenänderungen sofort im laufenden Betrieb austauschen.

Führen Sie Jetty mit (ich verwende Jetty 8 mit JDK 6):

java -agentlib:jdwp=transport=dt_socket,server=y,address=8000,suspend=n -jar start.jar

und erstellen Sie dann in Eclipse eine Standard-Remote-Debug-Konfiguration, die wie folgt aussieht: enter image description here

und klicken Sie auf "Debuggen". Selbst wenn Sie nicht vorhaben, irgendetwas zu debuggen, wird die Verbindung des Debuggers mit der entfernten Jetty-VM dazu führen, dass die Klassenänderungen in Echtzeit bereitgestellt werden.

Das Einzige, was Sie beachten sollten, ist die eingeschränkte Fähigkeit der VM zum Hot-Swap einer Klasse. Die "Form" der Klasse kann sich nicht ändern. Wenn Sie also neue Klassenmitglieder oder neue Methoden definieren, müssen Sie den Webkontext neu laden (berühren Sie einfach die XML-Datei des Kontexts und Jetty lädt sie neu).

Ich hoffe, das hilft.

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