Exercice 3 - Implémentation de la partie présentation⚓︎
Nous allons maintenant implémenter la partie "Couche Présentation" du schéma suivant :
1. Création du projet Web⚓︎
Nous allons maintenant créer le projet Web, qui permet de gérer le site web.
- Dans la vue Entreprise Explorer, créer un nouveau Dynamic Web Project, nommé GestionNotesWeb.
- Vérifier la runtime utilisée, décocher "Add project to an EAR", cliquer sur
Next deux fois. - Cocher "Generate web.xml deployment descriptor" puis cliquer sur
Finish .
Ajout du lien vers le projet EJB
Tout comme le client Java créé précédemment, nous allons avoir besoin d'accéder aux beans du modèle ainsi qu'à l'interface de l'EJB (la local cette fois-ci). Il faut donc ajouter une dépendance vers GestionNotesEJB dans le classpath du projet.
2. Implémentation de la couche présentation⚓︎
Le projet contient deux sous-couches :
- La couche "contrôleur" (les Servlets).
- La couche "vue" (les JSPs).
Les modifications décrites ci-dessous le sont à nouveau par rapport au projet précédent (GestionNotes du TD3).
2.1. Implémentation de la couche "contrôleur"⚓︎
Il y a deux modifications à effectuer dans chaque Servlet :
- La méthode
init
doit être supprimée. -
En effet, l'instantiation de l'EJB (
NoteBusinessLocal
) ne se fait plus manuellement, mais via injection. De plus, l'interface utilisée ne s'appelle plusNotesBusiness
maisNotesBusinessLocal
. Le champ dans chaque Servlet devient donc :☕ Code Java@EJB private NotesBusinessLocal business;
Interface local vs remote
Pour l'instant, les deux projets, GestionNotesEJB et GestionNotesWeb sont déployés sur le même serveur, donc sur la même JVM. On peut donc utiliser l'interface local.
Lorsque c'est possible, on utilise toujours l'interface local :
- Elle est plus facile à appeller (injection, plutôt que recherche dans l'annuaire JNDI comme dans le client lourd).
- Elle est beaucoup moins gourmande en ressources. Avec l'interface remote, le protocole RMI est utilisé, qui nécessite la création de Socket et l'utilisation du réseau ...
2.2. Implémentation de la couche "vue"⚓︎
Il n'y a aucune modification à effectuer dans cette couche, qui peut être recopiée sans modification.
Ça y est, notre projet Web est disponible. On ne peut pas le déployer directement, car il est lié au projet EJB. Il va donc falloir créer un projet contenant ces deux modules. C'est le rôle du projet d'application d'entreprise (le premier "E" de JEE).