[JAVA] Ich habe versucht, mit DevTools of Thorntail (ehemals WildFly Swarm) heiß nachzuladen.

Überblick

Über Thorntail

In Zukunft wird WildFly Swarm in Thorntail umbenannt und strebt ein Wachstum an, das nicht an WildFly gebunden ist.

Motivation

Bisher war die Entwicklung der WildFly Swarm-App schwierig, da sie keine Hot-Reloads verarbeiten kann. WildFly Swarm hatte keine andere Wahl, als ein UberJar (ausführbares JAR) zu erstellen und es mit dem Befehl java -jar auszuführen. Das UberJAR von WildFly Swawrm kann zwischen zehn Megabyte und über 100 Megabyte liegen, was einige Zeit in Anspruch nimmt, um es in der Entwicklung zu verpacken. Mit dem Ersatz von Thorntail ist das Developer Tool jetzt verfügbar und kann im laufenden Betrieb neu geladen werden. (Ein Mechanismus, der nur die geänderte Klasse neu lädt, ohne alle Anwendungen zu packen oder erneut bereitzustellen, während der Anwendungsserver ausgeführt wird.)

Da ich diesmal die Funktion ausprobiert habe, werde ich die folgende Ausführungsprozedur zusammen mit dem Beispielcode schreiben.

Verfahren

Vorbereitung

Zum Zeitpunkt dieses Schreibens war Thorntail nur in der SNAPSHOT-Version verfügbar und wurde nicht für Maven Central freigegeben, sodass $ HOME / .m2 verwendet werden kann, um Abhängigkeiten von den SNAPSHOT-Versionsbibliotheken und -Plugins von Thorntail aufzulösen. Fügen Sie https: // oss.sonatype.org / content / repositories / snapshots als Snapshot-Repository zu / settings.xml hinzu.

xml:$HOME/.m2/settings.xml


<?xml version="1.0" encoding="UTF-8"?>
<settings xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.1.0 http://maven.apache.org/xsd/settings-1.1.0.xsd" xmlns="http://maven.apache.org/SETTINGS/1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <profile>
      <id>ossrh</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <snapshots />
          <id>ossrh</id>
          <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </repository>
      </repositories>
      <pluginRepositories>
        <pluginRepository>
          <snapshots />
          <id>ossrh</id>
          <url>https://oss.sonatype.org/content/repositories/snapshots</url>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

Ich habe den Beispielcode veröffentlicht, den ich auf GitHub erstellt habe. https://github.com/sightseeker/thorntail-demo

Ich werde das Verfahren zum Erstellen eines Projekts von Grund auf weglassen.

Überprüfen Sie den Beispielcode


git clone [email protected]:sightseeker/thorntail-demo.git && cd thorntail-demo

In die Quelle wird nur eine JAX-RS (REST-API) geschrieben.

├── pom.xml
└── src
    └── main
        ├── java
        │   └── com
        │       └── sightseekerstudio
        │           ├── MyApplication.java
        │           └── MyResource.java
        └── resources
            └── META-INF
                ├── application.properties
                └── beans.xml

Das folgende Verfahren verwendet zwei Terminalfenster. (Für die Thorntail-Ausführung (A) und für den Kompilierungsprozess (B))

Starten Sie Thorntail im Entwicklungsmodus

Terminal A.


#Erstes Erstellen der App
mvn package

#Laden Sie den Entwicklungsmodus neu und starten Sie Thorntail
THORNTAIL_DEV_MODE=reload
./target/thorntail-demo-1.0-SNAPSHOT-bin/bin/run.sh

#Das Serverprotokoll wird in der Standardausgabe angezeigt

Stellen Sie sicher, dass Sie auf die App zugreifen können (JAX-RS-Ressource).

Greifen Sie mit einem Browser usw. auf http: // localhost: 8080 zu und bestätigen Sie, dass "Hello World" angezeigt wird.

Machen Sie den Prozess des Erkennens und Kompilierens von Änderungen resident

Ich benutze das Fizzed Watcher Maven Plugin, um pom.xml so einzustellen, dass das Kompilieren mit der Änderungserkennung funktioniert. Der folgende Befehl führt compile aus, wenn eine Dateiänderung erkannt wird.

Terminal B.


mvn fizzed-watcher:run

Versuchen Sie, die Klasse der JAX-RS-Ressource zu ändern

Versuchen Sie zu diesem Zeitpunkt, die Hello World-Zeichenfolge von "src / main / java / com / sichtseekerstudio / MyResource.java" mit einem Editor oder ähnlichem zu ändern.

Anschließend wird die Kompilierung in Terminal B ausgeführt, und die in der Kompilierung geänderte Klasse von "MyResource" wird in Terminal A neu geladen.

Sie können erneut zu http: // localhost: 8080 gehen und sehen, dass die geänderte Zeichenfolge angezeigt wird.

Recommended Posts

Ich habe versucht, mit DevTools of Thorntail (ehemals WildFly Swarm) heiß nachzuladen.
Ich habe Eclipse MicroProfile OpenAPI mit WildFly Swarm ausprobiert
Ich habe DI mit Ruby versucht
Ich habe UPSERT mit PostgreSQL ausprobiert.
Ich habe BIND mit Docker ausprobiert
Ich habe versucht, JOOQ mit Gradle zu verwenden
Ich habe eine morphologische Analyse mit MeCab versucht
Ich habe versucht, mit Java zu interagieren
Ich habe versucht, UDP mit Java zu kommunizieren
Ich habe GraphQL mit Spring Boot ausprobiert
Ich habe Flyway mit Spring Boot ausprobiert
Ich habe versucht, Slim mit Scaffold anzupassen