Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Prochaine révision
Révision précédente
enseignement:tp:sw:fournisseur:2014 [2014/09/29 20:17]
ecoquery créée
enseignement:tp:sw:fournisseur:2014 [2014/09/30 11:32] (Version actuelle)
ecoquery [Métier]
Ligne 4: Ligne 4:
 ==== Rendu ==== ==== Rendu ====
  
-Ce TP est à rendre pour le **28/10/2013**, à raison d'un rendu par binôme. Le rendu se fera par l'intermédiaire d'un projet forge (on fera attention a bien donner le rôle "reporter" à Emmanuel Coquery et à Lionel Medini) contenant:+Ce TP est à rendre pour le **28/10/2014**, à raison d'un rendu par binôme. Le rendu se fera par l'intermédiaire d'un projet forge (on fera attention a bien donner le rôle "reporter" à Emmanuel Coquery et à Lionel Medini) contenant:
     * le projet maven mis à jour par vos soins (//**sans**// le répertoire ''target'')     * le projet maven mis à jour par vos soins (//**sans**// le répertoire ''target'')
     * un fichier README.txt contenant au moins les noms, prénoms et numéros d'étudiants du binôme/trinôme. Toute autre information à transmettre aux enseignants (e.g. justifications de choix techniques) se fera dans ce fichier.     * un fichier README.txt contenant au moins les noms, prénoms et numéros d'étudiants du binôme/trinôme. Toute autre information à transmettre aux enseignants (e.g. justifications de choix techniques) se fera dans ce fichier.
Ligne 11: Ligne 11:
  
 Il est demandé à ce que les 4 implémentations du service (servlet, @WebServiceProvider et @WebService et code généré) puissent fonctionner simultanément (sur des URL différentes). Le fichier de test SOAPUI devra comporter des //test suites// pour les 4 URL points d'accès. Il est demandé à ce que les 4 implémentations du service (servlet, @WebServiceProvider et @WebService et code généré) puissent fonctionner simultanément (sur des URL différentes). Le fichier de test SOAPUI devra comporter des //test suites// pour les 4 URL points d'accès.
- 
-====== ICI ====== 
- 
  
  
 ===== Métier ===== ===== Métier =====
  
-Le projet [[http://forge.univ-lyon1.fr/projects/inf2018m-2013-base|TIW5 2013 Base]]((hg clone https://forge.univ-lyon1.fr/hg/inf2018m-2013-base)) contient à présent un nouveau module ''services''Le module ''model'' a été mis à jour. On partira de cette nouvelle base pour ce TP.+Le projet [[http://forge.univ-lyon1.fr/projects/inf2018m-2014-base|TIW5 2014 Base]]((hg clone https://forge.univ-lyon1.fr/hg/inf2018m-2014-base)) contient à présent un nouveau module ''services'' On partira de cette nouvelle base pour ce TP.
  
-Créer une classe qui implémente l'interface ''ILivraison''. A cette occasion, on effectuera les modifications nécessaires au module ''model'' (ajout d'entités, de dao, etc). La javadoc de l'interface ''ILivraison'' donne des détails concernant le comportement attendu des différentes méthodes.+Créer une classe qui implémente l'interface ''IVODService''. A cette occasion, on effectuera les modifications nécessaires au package ''sw.film.vod'' (ajout d'entités, de dao, etc). La javadoc de l'interface ''IVODService'' donne des détails concernant le comportement attendu des différentes méthodes.
  
 Ecrire quelques tests unitaires pour vérifier le bon fonctionnement de la classe. Ecrire quelques tests unitaires pour vérifier le bon fonctionnement de la classe.
  
 +<note tip>Le fichier de configuration ''persistence.xml'' utilise une URL réseau pour la base H2. Cela permet les connexions concurrente. Il faut par contre lancer la base à côté en lançant la console H2 et en se connectant à l'URL spécifiée dans ''persistence.xml''</note>
 ===== Implémentation en servlet ===== ===== Implémentation en servlet =====
  
-Créer une nouvelle servlet pour implémenter le service ''LivraisonService'' du fichier ''livraisons.wsdl''((module ''services'')). On utilisera SAAJ pour la (dé)sérialisation des messages SOAP. On séparera le traitement en trois classes:+Créer une nouvelle servlet pour implémenter le service ''VODService'' du fichier ''vod.wsdl''((module ''services'')). On utilisera SAAJ pour la (dé)sérialisation des messages SOAP. On séparera le traitement en trois classes:
   * La gestion des requêtes HTTP et l'extraction du message SOAP dans la servlet   * La gestion des requêtes HTTP et l'extraction du message SOAP dans la servlet
   * Une classe contrôleur qui:   * Une classe contrôleur qui:
Ligne 36: Ligne 34:
 ===== Implémentation via @WebServiceProvider ===== ===== Implémentation via @WebServiceProvider =====
  
-Modifier le contrôleur précédent pour qu'il puisse être annoté via @WebServiceProvider. Le choix est laissé libre entre un traitement du message SOAP complet ou un traitement direct au niveau du PAYLOAD. Configurer((ce qui veut dire également ajouter les bonnes dépendances dans le pom)) la servlet CXF pour exposer le contrôleur comme une service implémentant le service précédent. On pourra s'inspirer de la configuration du module ''wine-service''. On commentera les différents éléments de configuration (XML, annotations) introduits en expliquant leurs effets.+Modifier le contrôleur précédent pour qu'il puisse être annoté via @WebServiceProvider. Le choix est laissé libre entre un traitement du message SOAP complet ou un traitement direct au niveau du PAYLOAD. Configurer((ce qui veut dire également ajouter les bonnes dépendances dans le pom)) la servlet CXF pour exposer le contrôleur comme une service implémentant le service précédent. On pourra s'inspirer de la configuration du module ''cineservice''. On commentera les différents éléments de configuration (XML, annotations) introduits en expliquant leurs effets.
  
-Tester avec SOAPUI((il est possible d'utiliser les tests précédents en changemant le point d'accès)).+Tester avec SOAPUI((il est possible d'utiliser les tests précédents en changeant le point d'accès)).
 ===== Implémentation via @WebService ===== ===== Implémentation via @WebService =====
  
-Annoter l'interface ''ILivraison'' et la classe qui l'implémente avec @WebService et configurer CXF pour exposer ce service. Le service ''LivraisonService'' de ''livraisons.wsdl'' doit être correctement implémenté((seul le point d'accès peut changer)).+Annoter l'interface ''IVODService'' et la classe qui l'implémente avec @WebService et configurer CXF pour exposer ce service. Le service ''VODService'' de ''vod.wsdl'' doit être correctement implémenté((seul le point d'accès peut changer)).
  
-Tester avec SOAPUI((il est possible d'utiliser les tests précédents en changemant le point d'accès)).+Tester avec SOAPUI((il est possible d'utiliser les tests précédents en changeant le point d'accès)).
  
 ===== Génération de code ===== ===== Génération de code =====
  
-Utiliser le plugin CXF [[http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html|wsdl to java]] pour générer des classes implémentant le service ''LivraisonService'' de ''livraisons.wsdl'' dans le package ''sw.wine.livraison.gen''. Implémenter le service en appelant le composant qui implémente l'interface ''ILivraison'' et le déployer via CXF.+Utiliser le plugin CXF [[http://cxf.apache.org/docs/maven-cxf-codegen-plugin-wsdl-to-java.html|wsdl to java]] pour générer des classes implémentant le service ''VODService'' de ''vod.wsdl'' dans le package ''sw.film.vod.services.gen''. Implémenter le service en appelant le composant qui implémente l'interface ''IVODService'' et le déployer via CXF.
  
-Tester avec SOAPUI((il est possible d'utiliser les tests précédents en changemant le point d'accès)).+Tester avec SOAPUI((il est possible d'utiliser les tests précédents en changeant le point d'accès)).
  
 ===== Stub Client ===== ===== Stub Client =====