I311 - EJB, CDI et REST
L’objectif de cette séance est de mettre en place simplement des EJB, des beans CDI en lien avec les services web REST et la persistance JPA dans un serveur d’application géré dans un conteneur.
Mise en place de l'environnement de travail
Le serveur d'application JEE
Dans le cadre de ces TP nous utiliserons le serveur d’applications JakartaEE Glassfish et plus précisément la distribution Payara (https://www.payara.fish/). Dans un premier temps, nous utiliserons la version 5 complète (https://hub.docker.com/r/payara/server-full). La série des Payara5 est compatible avec Jakarta EE9.1 et la série Payara6 avec Jakarta EE 10. Des images docker sont disponibles pour différents profils et différents JDK (https://hub.docker.com/u/payara/).
Une édition spéciale de payara dite micro (https://www.payara.fish/learn/getting-started-with-payara-micro/) est dédiée aux architectures micro-services.
Installation dans des conteneurs
Il fortement conseillé d’utiliser des conteneurs pour mettre en oeuvre le serveur d’application, la base de données relationnelles et les autres services.
Vous trouverez ici un exemple de base qui s’appuie sur https://github.com/payara/docker-payaraserver-full : https://github.com/dptinfoutln/dockerpayaracompose/tree/develop
L’interface d’administration du serveur est accessible sur https://localhost:4848/ (ou l’IP de votre VM).
Pour paramétrer les connexions à la base de données, étudier le docker-compose.yml qui contient un exemple avec H2 (à adapter pour postgres).
Pour déployer une application, il est possible de le faire depuis l’interface web d’administration, via un volume docker, ou en faisant une image contenant l’application. Votre IDE peut être paramétré pour faire cela via l’API spécifique du serveur (https://docs.payara.fish/community/docs/documentation/ecosystem/intellij-plugin/README.html).
Une application JEE "Minimale"
- Nous allons revoir les concepts de bases et la mise en pratique avec une application minimale :
Ce projet illustre les concepts et techniques de base en s'appuyant sur les documents suivants.
- La mise en place de base et l’utilisation d’une Servlet sont expliqués ici :
- L’accès à la servlet http://localhost:8080/hello/world
- La mise en place de base d’une API REST est présentée ici :
- L’accès à l’API REST : curl -v http://localhost:8080/hello/api/hello
- La mise en place de base de CDI est présentée ici
- A vous de découvrir la mise en place JPA avec JEE (deux points principaux : l’adaptation du persistance.xml et l’injection d’un entity manager).
A partir de là, mettre en place vos classes métiers avec CDI et des EJBs en vous appuyant sur la persistance JPA et permettre l’accès via une API REST.
Pour aller beaucoup plus loin…. https://github.com/hantsy/jakartaee9-starter-boilerplate