On travaillera sur le service AlbumDataService
du TP précédent.
Le TP dure deux séances et est à rendre pour le dimanche 27/11/2011, comme précédement via la forge pour par envoi mail du zip du dépôt (sans les binaires).
Dans le sous-projet services-impl
, créer une classe tiw5.services.handlers.LogHandler
pour implémenter un handler qui va afficher l'élément principal des messages reçus et envoyés, ainsi que la date. Pour cela, la classe doit implémenter l'interface LogicalHandler<LogicalMessageContext>, le log se faisant dans la méthode handleMessage.
Configurer le service dans web-interface
pour utiliser le handler et tester avec soapUI.
Créer une classe tiw5.services.handlers.UserHandler
étendant SOAPHandler<SOAPMessageContext>. Si un élément {http://master-info.univ-lyon1.fr/M2TI/TIW5/services}user
1) est dans le header SOAP, prendre sa valeur et ajouter au contexte un propriété user
avec cette valeur. Procéder de même pour l'élément {http://master-info.univ-lyon1.fr/M2TI/TIW5/services}password
2).
Question optionnelle: Modifier le WSDL pour y intégrer les déclarations de header (voir ici).
Intégrer ce handler de tel façon qu'il soit exécuté avant le handler de log sur un message entrant. Modifier le handler de log de façon à afficher la propriété user
. Tester avec SOAPUI.
Créer un handler supplémentaire tiw5.services.handlers.AuthHandler
qui vérifie que le couple user/password fait bien partie des logins autorisés. Ce handler utilisera une liste de couples user/password pris dans un fichier XML.
En cas d'échec sur l'authentification, on pourra lancer une exception SOAPFaultException ou ProtocolException (selon le type de handler).
Remarques:
Ajouter au bon endroit le handler dans la chaîne du service AlbumDataService. Tester avec SOAPUI.
Créer un handler tiw5.services.handlers.AccessControlHandler
qui vérifie que l'utilisateur a bien le droit de modifier un album. On considère que ce droit porte sur tous les albums et qu'il est spécifié dans le fichier XML du handler précédent.
Ajouter au bon endroit le handler dans la chaîne du service AlbumDataService. Tester avec SOAPUI.
Annoter la classe AlbumDataService
de manière à pouvoir exposer ce service en REST en utilisant entre autre les annotations suivantes:
@Path
@GET
, @PUT
@PathParam
@Produces
, @Consumes
Modifier le fichier services.xml
pour déployer un point d'accès REST pour AlbumDataService.
Bien penser aux dépendances maven à ajouter (c.f. http://cxf.apache.org/docs/jax-rs.html).