"Créer facilement des microservices avec Eclipse MicroProfile" - Conférence Devoxx France
Contexte
J’ai eu le plaisir d’être sélectionné par le jury de Devoxx France pour animer une Université sur la création des microservices avec Eclipse Microprofile pour la deuxième année consécutive. Cette année est particulière car je suis seul pour animer cette université. C’est un bon défi pour moi.

Voici le sujet
L’architecture des microservices apporte son lot d’avantages mais surtout des nouveaux challenges pour les équipes de développements.
Le monde Java n’est pas en reste, profitant des spécifications matures de Java EE / Jakarta EE (JAX-RS, CDI..), une communauté s’est construite en essayant d’apporter des éléments de réponses aux nouveaux défis : MicroProfile sous l’égide de la fondation Eclipse. Pour cela, une série de nouvelles spécifications ont été créés : Config, OpenAPI, Rest Client, HealthCheck, Propagation JWT, Fault Tolerance, Metrics.
Le déploiement est sous forme d’uberjar, c’est à dire sans installation de serveur d’applications au préalable. On démarre comme une simple application java.
La communauté aime la pluralité. Cela est aussi vraie pour Eclipse Microprofile avec plusieurs implémentations disponibles : thorntail, payara, helidon, tomee, open liberty et d’autres.
Au delà d’une introduction sur ce projet, nous allons aborder les différentes spécifications par l’exemple (c’est à dire du code). Nous verrons ainsi leurs intérêts et leurs utilisations.
De plus, la dernière version Eclipse Microprofile 2.0 s’aligne sur les spécifiations Java EE / Jakarta EE 8.
CFP de Devoxxfr : via cfp.devoxx.fr

And now the talk on #Eclipse #microprofiles by @Lilian_Benoit #devoxxfr pic.twitter.com/jeaEfq1GjD
— Horacio Gonzalez #io19 (@LostInBrittany) 17 avril 2019
Vidéo de la présentation :
La conférence a été filmée et elle est disponible sur Internet via Youtube.fr
Support de présentation :
Le support de la présentation est disponible sur Speakerdeck.com

Dépôt GIT pour les exercices :
Les exemples sont disponibles sur un dépôt GIT via GitHub
Structure du dépôt
Les projets sont configurés avec l’outil Apache Maven. il existe un profile Maven pour chacune des implémentations Thorntail et OpenLiberty
Le pré-requis est la connaissance de JAX-RS. Pour cela, il y a deux projets d’introduction :
-
jaxrs : Projet Java utilisant uniquement JavaEE / JakartaEE, pour générer un war à déployer sur serveur d’application
-
mp-jaxrs : Même code que jaxrs mais avec une dépendance MicroProfile au lieu de JavaEE / JakartaEE
La dépôt contient aussi différents projets correspondant aux différentes spécifications :
-
mp-config : Pour manipuler la spécification MicroProfile Config
-
mp-fault-tolerance : Pour manipuler la spécification MicroProfile Fault Tolerance
-
mp-health : Pour manipuler la spécification MicroProfile Health Checks
-
mp-jwt : Pour manipuler la spécification MicroProfile JWT
-
mp-metrics : Pour manipuler la spécification MicroProfile Metrics
-
mp-openapi : Pour manipuler la spécification MicroProfile OpenAPI
-
mp-opentracing : Pour manipuler la spécification MicroProfile OpenTracing
-
mp-rest-client : Pour manipuler la spécification MicroProfile Rest Client
Chaque spécification a son projet afin d’étudier la spécification souhaitée sans aucun chemin. C’est à dire que je peux faire mp-jwt sans mp-health
Le projet microprofile-specs permet de définir deux profils avec les plugins Maven nécessaire aux implémentations. (Thorntail et Open Liberty)
Utilisation de branches
Les branches sont utilisées pour obtenir les différentes solutions. Par défaut, il faut commencer avec la branche mp-start afin de commencer l’exercice.
Pour avoir la solution, il suffit de choisir la branche correspondant ayant le nom spécification-finish. Par exemple, pour la branche solution pour la spécification mp-health est la branche mpHealth-finish.
Compilation et exécution pour Thorntail
mvn package -P thorntail-v2
Le plugin Thorntail est configuré pour créer un hollow-jar. L’exécution est faite par la commande suivante
<plugin>
<groupId>io.thorntail</groupId>
<artifactId>thorntail-maven-plugin</artifactId>
<version>${version.thorntail}</version>
<executions>
<execution>
<goals>
<goal>package</goal>
</goals>
<configuration>
<hollow>true</hollow><!--(1)-->
</configuration>
</execution>
</executions>
</plugin>
-
true pour construire un hollow jar, false pour fat-jar
java -jar nom-projet-thorntail.jar mon-projet.war
Compilation et exécution pour OpenLiberty
mvn package -P liberty
Le plugin OpenLiberty est configuré pour créer un fat-jar. L’exécution est faite par la commande suivante :
java -jar nom-projet.jar
Moteur de recherche
"Eduquer, ce n'est pas remplir des vases mais c'est d'allumer des feux." - Michel Montaigne
Billets récents
- Eclipse plante systématiquement sous Debian (et autres distribution Linux)
- JEP 463, Implicitly Declared Classes and Instance Main Methods (Second Preview)
- Debian - Montée de version de Debian 11 (Bullseye) à Debian 12 (Bookworm)
- JEP 451, Prepare to Disallow the Dynamic Loading of Agents
- JEP 444, Virtual Threads