Avec Objis, maîtrisez la mise en oeuvre pas à pas d’une injection de dépendances avec WELD, implémentation de référence de la spécification CDI.
ASTUCE –> Soyez informé de la mise à jour de nos tutos ou de la création de nouveaux tutos.
Prérequis
Développement d’une Servlet
Intégration Tomcat dans eclipse
Objectifs
Mettre en oeuvre une architecture en couche (Présentation + Service + Dao) avec CDI pour l’intégration des couches (en lieu et place des new())
Programme
Contexte : Injection de dépendances
Partie 1 : création projet web dynamique
Partie 3 : ajout librairie WELD
Partie 4 : ajout couche Service
Partie 5 : ajout couche Présentation (Servlet)
Partie 7 : ajout listener pour chargement de conteneur CDI
Partie 10 : Refactoring pour déploiement serveur Wildfly
Durée
30 minutes.
Contexte
QUESTION 1 : qu’est ce que la JSR 346 ? Citez au moins 4 services fournis par la Spécification CDI. Parmi ces services, lequel est le plus fréquemment utilisé ?
QUESTION 2 : qu’est ce qu’un conteneur CDI ? Citez 3 exemples de conteneur CDI. Quelle différences entre ces conteneurs ? Quel lien avec Spring IoC ?
Besoin de Supprimer les ligne de code d’instanciation new()
Favoriser le ‘Couplage faible’ entre couches applicatives
Partie 1 : création projet web dynamique ‘democdijee’
Avec Eclipse, créez un projet Java Web nommé ‘democdijee’
Next 2 fois . vous arrivez sur l’écran suivant
Notez que nous avons ici sélectionné l’option de création d’un fichier web.xml
Mettre à jour le web.xml de façon à imposer une page d’accueil ‘index.html
Créer la page index.html
‘
Déployez l’application. Vous obtenez ceci :
Nous allons faire en sorte que ce lien déclenche une Servlet qui va appeler une couche service qui appellera elle-même une couche DAO…le tout via Injection succéssive :
Le Dao sera injecté dans la couche Service
Le Service sera injecté dans la Servlet
Nous allons successivement créer le Dao, le service puis la Servlet.
Partie 2 : Ajout couche DAO (Interface + implémentation)
Créez un package com.objis.democdi.dao
Ajoutez le code suivant, correspondant à l’interface IClientDao et la classe ClientDao qui feront office de couche d’accès aux données :
Interface
Implémentation
QUESTION : Expliquez le rôle de l’annotation @PostConstruct
Vue du projet à cette étape
La couche DAO est terminée. Désormais nous allons créer la couche service. Celle-ci doit utiliser CDI donc nous allons ajouter les dépendances.
Partie 3 : ajout librairie Weld
QUESTION 1 : Qu’est ce que WELD ? Citez 2 concurrents.
Téléchargez le framework Weld (ici version 2.1.2 Final )
Dans le répertoire artifact/weld, identifiez les jars weld-se.jar et weld-servlet.jar
Ajoutez ces jars dans WEB-LIBlib les librairies WELD
(optionnel) A VOUS DE JOUER : proposez une technique permettant d’ajouter les dépendances avec MAVEN. Comment faire ? Quels avantages ?
Partie 4 : ajout couche Service
Créez un package com.objis.democdi.service
Ajoutez le code suivant, correspondant à la classe ClientService qui fera office de couche service :
Expliquez les lignes 12 et 13
Vue du projet à cette étape
Expliquez
La couche Service est terminée.
reste à coder la couche présentation, dans laquelle la couche service sera injectée.
Partie 5 : ajout couche Présentation (Servlet)
Partie 6 : ajout beans.xml
Partie 7 : ajout listener pour chargement de conteneur CDI
Partie 8 : déploiement
BRAVO !!!
Partie 9 : optimisation
Proposez une amélioration de l’intégration entre la couche présentation (Servlet) et la couche Service.
Partie 10 : Déploiement dans Wildfly
QUESTION : Quelles différences entre les serveurs d’application Tomxat et Wildfly ?
Déployez le livrable dans le serveur d’applications Wildfly.
Montrez qu’il est possible de proposer une version de l’application sans les librairies Welds dans WEB-INFlib. Expliquez pourquoi
Conclusion
Dans ce tutoriel , voius avez mis en oeuvre pas à pas CDI avec WELD dans un environnement Tomcat
SOLUTION
Projet Eclipse
War dans Tomcat
War dans Wildfly