Tutoriel Injection dépendances CDI + WELD + Tomcat

////Tutoriel Injection dépendances CDI + WELD + Tomcat

injection-dependances-objis.png 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 2 : ajout couche DAO

Partie 3 : ajout librairie WELD

Partie 4 : ajout couche Service

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

Partie 9 : optimisation

Partie 10 : Refactoring pour déploiement serveur Wildfly

Conclusion

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’

tutoriel-injection-cdi-servlet-jee-1

Next 2 fois . vous arrivez sur l’écran suivant

tutoriel-injection-cdi-servlet-jee-2

Notez que nous avons ici sélectionné l’option de création d’un fichier web.xml

tutoriel-injection-cdi-servlet-jee-3

Mettre à jour le web.xml de façon à imposer une page d’accueil ‘index.html

tutoriel-injection-cdi-servlet-jee-3bis

Créer la page index.html

tutoriel-injection-cdi-servlet-jee-3ter

 

tutoriel-injection-cdi-servlet-jee-3terBis

Déployez l’application. Vous obtenez ceci :

tutoriel-injection-cdi-servlet-jee-12bis

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

tutoriel-injection-cdi-servlet-jee-4-interface-dao

Implémentation

tutoriel-injection-cdi-servlet-jee-4-implementation-dao

QUESTION : Expliquez le rôle de l’annotation @PostConstruct

Vue du projet à cette étape

tutoriel-injection-cdi-servlet-jee-6

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

tutoriel-injection-cdi-servlet-jee-7bis

Ajoutez ces jars dans WEB-LIBlib les librairies WELD

tutoriel-injection-cdi-servlet-jee-7

(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 :

tutoriel-injection-cdi-servlet-jee-8

Expliquez les lignes 12 et 13

Vue du projet à cette étape

tutoriel-injection-cdi-servlet-jee-9

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)

tutoriel-injection-cdi-servlet-jee-10

 

Partie 6 : ajout beans.xml

tutoriel-injection-cdi-servlet-jee-11

 

tutoriel-injection-cdi-servlet-jee-12

Partie 7 : ajout listener pour chargement de conteneur CDI

tutoriel-injection-cdi-servlet-jee-13

Partie 8 : déploiement

tutoriel-injection-cdi-servlet-jee-12bis

 

tutoriel-injection-cdi-servlet-jee-14

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

democdijee

War dans Tomcat

democdijee

War dans Wildfly

democdijeewildfly

2018-02-01T16:05:55+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java