====== TP: Clients ====== ===== Modalités ===== ==== Rendu ==== Ce TP est à rendre pour le mardi **08/11/2016**, à 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 au moins le rôle "reporter" à Emmanuel Coquery et à Lionel Medini) contenant: * le fichier xml du projet soapUI * le projet maven de l'interface en ligne de commande (//**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. L'identifiant du projet forge (de la forme pxxxxxx-nomprojet) est à saisir dans [[http://tomusss.univ-lyon1.fr|Tomuss]], dans la case ''TP4_client''. On fera attention à [[http://mercurial.selenic.com/wiki/Tag|tagger]] la révision correspondant au rendu avec le tag ''TP4'' ===== Introduction ===== L'objectif de ce TP est d'utiliser et de créer des clients pour un service web. Pour cela, on s'appuiera sur un service de récupération et de mise à jour. Le service est fourni sous la forme d'un war à déployer sur tomcat: soir la section [[#deploiement|Déploiement]]. La servlet CXF est disponible à l'URL suivante après déploiement: [[http://localhost:8080/locService/services]], ou (selon le mode de déploiement) [[http://localhost:8080/services]]. La première partie du TP requiert l'utilisation de [[http://www.soapui.org/|soapUI]] à télécharger et décompresser sur le disque local en salle de TP. Mirroirs: * [[http://liris.cnrs.fr/~ecoquery/files/SoapUI-5.2.1-win32-standalone-bin.zip|Windows]] * [[http://liris.cnrs.fr/~ecoquery/files/SoapUI-5.2.1-linux-bin.tar.gz|Linux]] * [[http://liris.cnrs.fr/~ecoquery/files/SoapUI-5.2.1-mac-bin.zip|MacOSX]] ===== soapUI ===== soapUI est un logiciel de test pour les services Web. Lancer soapUI et créer un nouveau projet. Le logiciel propose de charger un fichier WSDL et de générer des squelettes de tests. Utiliser le wsdl du service fourni et déployé précédemment. Lancer la requête de l'opération ''evenements'' et comparer avec le contenu de la base préchargée (//c.f.// les scripts sql du service fourni). Modifier la requête pour l'opération ''metAJourPersonne'' (avec des données) et l'exécuter. Faire de même avec la requête pour l'opération ''inscrire''. Créer ensuite un test avec la troisième (''inscrire'') et la première requête (''evenements''). On vérifiera avec la deuxième recette que la personne est bien inscrite dans l'événement visé. * [[http://www.soapui.org/Functional-Testing/functional-testing.html|Documentation soapUI pour le test fonctionnel]] ===== Client en ligne de commande ===== Creer un nouveau projet maven via Eclipse/Netbeans/IntelliJ ou via la commande mvn archetype:generate On choisira la réponse proposée par défaut pour le type de projet((maven-archetype-quickstart)) et la version. Le choix du groupId((équivalent au package, //e.g.// ''tiw1.tp4'')), de l'artifactId((e.g. ''client'')) et des autres paramètres est laissé libre. Importer ensuite le projet dans Eclipse/Netbeans/IntelliJ. Dans ce projet, on créera un client pour le service précédent. On utilisera l'API SAAJ pour envoyer et recevoir des messages du service. Le client sera constitué d'une interface texte avec un menu permettant de choisir entre l'affichage (en mode texte) des événements, la mise à jour d'un utilisateur ou son inscription à un événement. ===== Bonus ===== Reprendre les fonctionnalités du client en ligne de commande avec un client AJAX. Pour éviter les problèmes avec [[http://en.wikipedia.org/wiki/Cross-origin_resource_sharing|CORS]], déployer sous forme d'un projet web jee dans le même serveur tomcat/jetty. ===== Déploiement ===== Le fichier ''war'' peut être créé en utilisant la commande ''mvn package'' depuis le répertoire ''tiw1-is-tp4-inscriptions'' (après avoir cloné le dépôt depuis la forge (url de clone: https://forge.univ-lyon1.fr/hg/tiw1-is-tp4-inscriptions) ou en utilisant {{:enseignement:tp:sw:clients:tiw1-is-tp4-inscriptions.zip|}}). Pour le déployer dans tomcat/jetty: * Si vous lancez le tomcat/jetty depuis l'IDE, ajouter le war dans la configuration de lancement * Si vous lancez le tomcat/jetty depuis le shell, copier le war dans le répertoire de déploiement((par défaut ''webapps'' pour tomcat)) * Il est aussi possible de lancer le service directement depuis le répertoire ''tiw1-is-tp4-inscriptions'' via ''mvn jetty:run''