[JAVA] J'ai essayé le rechargement à chaud avec DevTools of Thorntail (anciennement WildFly Swarm)

Aperçu

À propos de Thorntail

À l'avenir, WildFly Swarm sera renommé Thorntail et visera une croissance qui n'est pas liée par WildFly.

Motivation

Jusqu'à présent, le développement de l'application WildFly Swarm a été difficile car elle ne peut pas gérer les recharges à chaud. WildFly Swarm n'avait pas d'autre choix que de créer un UberJar (exécutable JAR) et de l'exécuter avec la commande java -jar. L'UberJAR de WildFly Swawrm peut aller de dizaines de mégaoctets à plus de 100 mégaoctets, ce qui prend du temps à être intégré au développement. Avec le remplacement de Thorntail, l'outil de développement est maintenant disponible et peut être rechargé à chaud. (Un mécanisme qui recharge uniquement la classe modifiée sans empaquetage ni redéploiement de toutes les applications pendant que le serveur d'applications est en cours d'exécution)

Depuis que j'ai essayé la fonction cette fois, j'écrirai la procédure d'exécution ci-dessous avec l'exemple de code.

procédure

Préparation

Au moment d'écrire ces lignes, Thorntail n'était disponible que dans la version SNAPSHOT et n'avait pas été publié sur Maven Central, donc $ HOME / .m2 peut être utilisé pour résoudre les dépendances sur les bibliothèques et plugins de la version SNAPSHOT de Thorntail. Ajoutez https: // oss.sonatype.org / content / repositories / snapshots comme référentiel de snapshots à / settings.xml.

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>

J'ai publié l'exemple de code que j'ai créé sur GitHub. https://github.com/sightseeker/thorntail-demo

J'omettrai la procédure pour créer un projet à partir de zéro.

Découvrez un exemple de code


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

Un seul JAX-RS (API REST) est écrit dans la source.

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

La procédure suivante utilise deux fenêtres de terminal. (Pour l'exécution de Thorntail (A) et pour le processus de compilation (B))

Lancez Thorntail en mode développement

Terminal A


#Version initiale de l'application
mvn package

#Recharger le mode de développement et lancer Thorntail
THORNTAIL_DEV_MODE=reload
./target/thorntail-demo-1.0-SNAPSHOT-bin/bin/run.sh

#Le journal du serveur apparaît dans la sortie standard

Assurez-vous que vous pouvez accéder à l'application (ressource JAX-RS)

Accédez à http: // localhost: 8080 avec un navigateur, etc. et confirmez que «Hello World» est affiché.

Rendre le processus de détection des changements et de les compiler résident

J'utilise Fizzed Watcher Maven Plugin pour définir pom.xml afin que la compilation fonctionne avec la détection des changements. La commande suivante exécutera la compilation lorsqu'une modification de fichier est détectée.

Terminal B


mvn fizzed-watcher:run

Essayez de changer la classe de la ressource JAX-RS

À ce moment, essayez de changer la chaîne de caractères Hello World de src / main / java / com / sightseekerstudio / MyResource.java avec un éditeur ou autre.

Ensuite, la compilation sera exécutée dans le Terminal B, puis la classe de MyResource qui a été modifiée dans la compilation sera rechargée dans le Terminal A.

Vous pouvez à nouveau accéder à http: // localhost: 8080 et voir que la chaîne modifiée s'affiche.

Recommended Posts

J'ai essayé le rechargement à chaud avec DevTools of Thorntail (anciennement WildFly Swarm)
J'ai essayé Eclipse MicroProfile OpenAPI avec WildFly Swarm
J'ai essayé DI avec Ruby
J'ai essayé UPSERT avec PostgreSQL.
J'ai essayé BIND avec Docker
J'ai essayé d'utiliser JOOQ avec Gradle
J'ai essayé l'analyse morphologique avec MeCab
J'ai essayé d'interagir avec Java
J'ai essayé la communication UDP avec Java
J'ai essayé GraphQL avec Spring Boot
J'ai essayé Flyway avec Spring Boot
J'ai essayé de personnaliser Slim avec Scaffold