webentwicklung-frage-antwort-db.com.de

Eclipse Kepler und JBoss Wildfly Hot Deployment

Ich versuche, Eclipse Kepler für Java EE 7. zu verwenden. Ich habe JBoss Tools bereits installiert und JBoss Wildfly erfolgreich als Server hinzugefügt. Meine Änderungen werden jedoch nicht automatisch bereitgestellt. Gibt es überhaupt eine App, die wie bei Glassfish automatisch installiert werden kann?

19
zulqarnain

Klicken Sie bei Verwendung von Eclipse zweimal auf Ihren WildFly Server, um die folgenden Eigenschaften zu bearbeiten:

  1. Publishing : Wählen Sie "Automatisch nach einem Build-Event veröffentlichen". Ich möchte auch das Veröffentlichungsintervall auf 1 Sekunde ändern.
  2. Verhalten beim Neuladen von Anwendungen : Aktivieren Sie das Kontrollkästchen "Neuladen der Anwendung anpassen ...", und bearbeiten Sie das Regex-Muster in \.jar$|\.class$.

Das ist es. Viel Glück!

26
varantes

Sowohl @varantes als auch @Sean sind grundsätzlich korrekt, aber diese Antworten sind nicht vollständig.

Leider ist die einzige Möglichkeit in einer Java-Server-Umgebung eine vollständige Hot-Deployment ohne Ausfallzeiten, wenn Sie ein kostenpflichtiges JRebel - oder kostenloses gefedertes - Tool verwenden.

Für kleine Projekte gibt es einige Möglichkeiten, die Arbeit durch teilweise Hot-Deployment zu beschleunigen. Im Wesentlichen:

  1. Bei Aktivierung der Option Automatisch veröffentlichen, wenn sich die Ressource ändert Und dann Änderungen in *.html, werden *.xhtml-Dateien sofort Reflektiert, sobald Sie den Browser aktualisieren.
  2. Damit Hot Deployment auch für *.jsp-Dateien funktioniert, sollten Sie in $ {wildfly-home}/standalone/configuration/standalone.xml
    <jsp-config/>
    ersetzen mit:
    <jsp-config development="true"/>

starten Sie den Server neu und genießen Sie die heiße Bereitstellung von Webdateien. 


Wenn Sie jedoch *.Java-Quelldateien ändern, ist nur eine teilweise Hot-Bereitstellung möglich.
Wie @varantes in seiner Antwort feststellte, ist das Aktivieren von Application Reload Behavior mit einem auf \.jar$|\.class$ gesetzten Regex-Muster eine Option, die jedoch einen schwerwiegenden Nachteil hat: Das gesamte Modul wird neu gestartet, also:

  1. Es dauert einige Zeit (abhängig davon, wie groß ein Modul ist).
  2. Der gesamte Anwendungsstatus geht verloren.

Ich persönlich entmutige diese Lösung.
Die JVM unterstützt (im Debug-Modus) das Code-Swapping für Methodentexte. Solange Sie nur Körper vorhandener Methoden modifizieren, sind Sie zu Hause (null Ausfallzeiten, Änderungen werden sofort übernommen). Sie müssen jedoch die automatische Veröffentlichung in den Servereinstellungen deaktivieren, da sonst der Status der Anwendung durch die erneute Veröffentlichung zerstört wird.

Wenn Sie jedoch stark mit Java-Code arbeiten (Hinzufügen von Klassen, Anmerkungen, Konstruktoren), kann ich leider nur empfehlen, die Veröffentlichung auf Never publish automatisch (oder Herunterfahren des Servers) zu setzen. Wenn Sie Ihre Arbeit in Java-Dateien beendet haben, starten Sie neu Übergeben Sie Ihr Modul (oder den Einschalten-Server). Wie du willst.


Es funktioniert für kleine Java-Projekte, aber für größere ist JRebel von unschätzbarem Wert (oder nur gefedert), da alle oben beschriebenen Ansätze nicht ausreichen.
BTW: Auch wegen solcher Probleme haben Lösungen wie Rails/Django/Play! Framework so große Popularität erlangt.

Viel Glück und schnelles Codieren!

21
G. Demecki

Ich gehe davon aus, dass Sie die neueste Version von Wildfly (8.0 Beta 1 zum Zeitpunkt des Schreibens) verwenden.

Suchen Sie in der Konfigurationsdatei standalone.xml nach <jsp-config /> . Fügen Sie das Attribut development = "true" hinzu, und es sollte Hot-Deployment durchführen. Die resultierende Konfiguration sieht folgendermaßen aus:

<jsp-config development="true"/>
8
umphy

Fügen Sie in der Konfigurationsdatei in xPath = // servlet-container/jsp-config/Attribute (Entwicklung, Prüfintervall, Modifikationstestintervall, Rekompilierung bei Fehler) hinzu

<servlet-container name="default" default-buffer-cache="default" stack-trace-on-error="local-only">
    <jsp-config development="true" check-interval="1" modification-test-interval="1" recompile-on-fail="true"/>
</servlet-container>

(Es funktioniert in WildFly-8.0.0.Final)

4
PeterB

Starten Sie den Server im Debug-Modus und verfolgen Sie die Chancen innerhalb der Methoden. Andere Änderungen Sie werden aufgefordert, den Server neu zu starten.

0