Différences

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

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:tp:sw:jaxws:2016 [2016/12/07 07:12]
ecoquery [Composant d'implémentation du service]
enseignement:tp:sw:jaxws:2016 [2016/12/09 15:42] (Version actuelle)
ecoquery [Contrôleur principal (front)]
Ligne 5: Ligne 5:
 Un projet de démarrage est fourni et comprend l'implémentation de base des fonctionnalités métier (module ''%%metier%%''). Il vous sera demandé de compléter ce projet en développant une application SpringBoot permettant d'exposer sous la forme d'un ensemble de services Web. Un projet de démarrage est fourni et comprend l'implémentation de base des fonctionnalités métier (module ''%%metier%%''). Il vous sera demandé de compléter ce projet en développant une application SpringBoot permettant d'exposer sous la forme d'un ensemble de services Web.
  
 +URL de pull du projet: https://forge.univ-lyon1.fr/hg/tiw1-2016-services-base
 ===== Modalités de rendu ===== ===== Modalités de rendu =====
  
Ligne 50: Ligne 51:
     }     }
    
 +    // ne pas utiliser dispatcherServlet comme nom pour ce bean sous peine de 
 +    // ne plus pouvoir utiliser de bean @Controller ailleurs dans l'application
     @Bean     @Bean
-    public ServletRegistrationBean dispatcherServlet() {+    public ServletRegistrationBean cxfDispatcherServlet() {
         return new ServletRegistrationBean(new CXFServlet(), "/soap-api/*");         return new ServletRegistrationBean(new CXFServlet(), "/soap-api/*");
     }     }
Ligne 66: Ligne 69:
 </note> </note>
  
-Aller à l'URL [[http://localhost:8080/soap-ui/]] et vérifiez que votre service est bien listé.+Aller à l'URL [[http://localhost:8080/soap-api/]] et vérifiez que votre service est bien listé.
  
 Tester son fonctionnement avec [[http://www.soapui.org/|soapUI]]. Tester son fonctionnement avec [[http://www.soapui.org/|soapUI]].
Ligne 74: Ligne 77:
 Le rôle de ce contrôleur est double: extraire le contenu XML dans des instances de classes Java et aiguiller la suite du traitement vers la bonne méthode du composant d'implémentation du service. Le rôle de ce contrôleur est double: extraire le contenu XML dans des instances de classes Java et aiguiller la suite du traitement vers la bonne méthode du composant d'implémentation du service.
  
-Créer un nouveau composant Spring implémentant l'interface [[https://docs.oracle.com/javaee/7/api/index.html?javax/xml/ws/Provider.html|''%%Provider<Source>%%'']]. La méthode ''%%invoke%%'' devra convertir le XML du //payload// en objets Java et appeler la bonne méthode du composant d'implémentation du service que vous avez mis en place à l'étape précédente.+Créer un nouveau composant Spring implémentant l'interface ''[[https://docs.oracle.com/javaee/7/api/index.html?javax/xml/ws/Provider.html|Provider<Source>]]''. La méthode ''%%invoke%%'' devra convertir le XML du //payload// en objets Java et appeler la bonne méthode du composant d'implémentation du service que vous avez mis en place à l'étape précédente.
  
 Déployer ce composant comme un Web service à une autre adresse et tester avec [[http://www.soapui.org/|soapUI]]. Déployer ce composant comme un Web service à une autre adresse et tester avec [[http://www.soapui.org/|soapUI]].
Ligne 80: Ligne 83:
 ==== Contrôleur principal (front) ==== ==== Contrôleur principal (front) ====
  
-Implémenter un contrôleur point d'accès au service via un [[http://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/web/servlet/mvc/Controller.html|''%%@Controller%%'']] SpringMVC. Ce contrôleur traitera les requêtes HTTP et extraira le contenu (//payload//) du message via l'API SAAJ. Il redirigera ensuite le traitement vers le composant Web service provider de l'étape précédente.+Implémenter un contrôleur point d'accès au service via un ''[[http://docs.spring.io/spring/docs/current/javadoc-api/index.html?org/springframework/web/servlet/mvc/Controller.html|@Controller]]'' SpringMVC. Ce contrôleur traitera les requêtes HTTP et extraira le contenu (//payload//) du message via l'API SAAJ. Il redirigera ensuite le traitement vers le composant Web service provider de l'étape précédente.
  
 Utiliser [[http://www.soapui.org/|soapUI]] pour tester votre contrôleur point d'accès. Utiliser [[http://www.soapui.org/|soapUI]] pour tester votre contrôleur point d'accès.
  
-<note>Comme indiqué dans ''%%cours.wsdl%%'', le service déployé devra être accessible à l'adresse [[http://localhost:8080/services-sans-cxf/cours|''%%http://localhost:8080/services-sans-cxf/cours%%'']]. Il faut donc bien configurer le ''%%@RequestMapping%%'' en fonction de cette URL.</note>+<note>Comme indiqué dans ''%%cours.wsdl%%'', le service déployé devra être accessible à l'adresse [[http://localhost:8080/services-sans-cxf/cours]]. Il faut donc bien configurer le ''%%@RequestMapping%%'' en fonction de cette URL.</note> 
 +<note important>Attention au nom de la dispatcherServlet dans la configuration Spring (maj du 09/12/2016)</note> 
 +<note tip>Pour fabriquer correctement les ''MimeHeaders'', il faut les copier via une boucle depuis les headers de la requête HTTP.</note> 
 +<note tip>En cas d'utilisation de l'API XML de transformation pour faire des copies entre représentations XML, penser à ''SAAJResult'' qu ipermet d'écrire dans noeud XML d'un message SOAP</note>
  
 Auteur: <html><a href="http://liris.cnrs.fr/ecoquery/"></html>Emmanuel Coquery<html></a><br/></html> <html><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license"><img src="https://licensebuttons.net/l/by-nc-sa/3.0/80x15.png" alt="CC Attribution-Noncommercial-Share Alike 3.0 Unported" /></a></html> Ce document est placé sous les termes de la licence suivante : <html><bdi><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" class="urlextern"></html>CC Attribution-Noncommercial-Share Alike 3.0 Unported<html></a></bdi></html> Auteur: <html><a href="http://liris.cnrs.fr/ecoquery/"></html>Emmanuel Coquery<html></a><br/></html> <html><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license"><img src="https://licensebuttons.net/l/by-nc-sa/3.0/80x15.png" alt="CC Attribution-Noncommercial-Share Alike 3.0 Unported" /></a></html> Ce document est placé sous les termes de la licence suivante : <html><bdi><a href="http://creativecommons.org/licenses/by-nc-sa/3.0/" rel="license" class="urlextern"></html>CC Attribution-Noncommercial-Share Alike 3.0 Unported<html></a></bdi></html>