Présentation du TD⚓︎
Dans les TD5 et TD6, nous avons vu comment mettre en place une architecture 3 tiers de ce type :
Notre application est fonctionnelle, mais comme nous l'avions indiqué au tout début de ce cours, il faut toujours penser en terme de réutilisabilité. On peut imaginer qu'une autre application Web souhaite également accéder aux mêmes services métiers. De même, on pourrait souhaiter qu'un client lourd (une application Java "classique" par exemple) puisse également le faire.
De même que les Servlets permettent à un navigateur Web de se connecter à l'application JEE, il existe un autre objet JEE permettant à une application Java de se connecter à des services métiers à distance. Ce sont les EJB, pour Entreprise JavaBeans.
Ils vont nous permettre de mettre en place une architecture 3-tiers ou 4-tiers de ce type (les couches "présentation" et "métier" pourront toujours être sur le même serveur, comme précédemment, ou, ce qui est nouveaux, sur des serveurs différents) :
Cela permet à différentes applications Web et différents clients lourds Java de se connecter aux services métiers proposés :
3 projets Java
Pour pouvoir définir des EJBs (sessions), il faut un projet Java EJB. Notre projet ne sera donc plus implémenté dans un seul projet Web dynamique, mais il va nous falloir trois projets :
- Un projet Web dynamique pour la couche présentation.
Un tel projet est déployé sur un serveur via un WAR (pour Web Application Archive). - Une projet EJB pour la couche métier.
Un tel projet est déployé sur un serveur via un JAR (pour Java Archive). - Une projet application d'entreprise qui va contenir ces deux modules.
Un tel projet est déployé sur un serveur via un EAR (pour Entreprise Application Archive).
Sur le serveur Wildfly, nous ne déploierons en fait que ce projet.
Il va en fait même nous falloir un 4e projet : - Un projet java classique, pour représenter le client lourd.
Ce projet ne sera pas déployé sur le serveur.
Nous allons maintenant implémenter cette architecture 4-tiers, plus précisément, nous allons implémenter le schéma suivant :