Tutoriel web services N°2 : création web service Java

////Tutoriel web services N°2 : création web service Java

Avec Objis, spécialiste formation WebServices, utilisez votre JDK Java pour créer et publier votre premier web service opérationnel. Mettez en oeuvre l’API JAX-WS. Comprenez le lien entre JAX-WS, JAXB et l’API de bas niveau SAAJ. Découvrez l’interface WSDL du service suite au déploiement de ce dernier. Comprenez les annotations @WebService et @SoapBinding. Identifiez enfin les limites de ce web service.

Liens utiles

 + de 100 tutoriaux java/jee Objis

 Tutoriel et formation Web Services

 Objis, spécialiste formation java depuis 2005

 Développement webservice avec NetBeans / Tomcat

Objectif

 Création un service web (code first) avec uniquement Java 6

 Publier le service web simple avec EndPoint.publish

 Comprendre la relation Java 6, JAX-WS et SAAJ

 Comprendre les annotations @WebService, @WebMethod, @SOAPBinding

 Analyser le fichier WSDL du web service

 Comprendre impact du stylede Binding (RPC / Document) du le Wsdl

Formation Architecture Java

Soyez prêt pour des projets ambitieux : formation architecture Java Objis

programme-detaille-formation-architecture-java-objis

Programme

 Contexte : standards WS (SAAJ, JAX-WS et Métadonnées) présents dans Java 6 !

 Méthodologie création web service : approche ‘bottom-up’

 Partie 1 : interface du service web

 Partie 2 : implémentation

 Partie 3 : publication

 Partie 4 : test

 Partie 5 : modification du binding

 Partie 6 : service plus complexes

Contexte

Pas besoin de l’artillerie lourde (cxf, axis, jbossws, metro…) pour créer votre premier service web. Java6 suffit ! En particluiers avec l’intégration des API suivantes :

 JAX-WS (API haut niveau) : javax.xml.ws

 SAAJ (API bas niveau) : javax.xml.soap

 Annotations Web services (faciliter développement) : javax.jws

webservices-java-6.png

Reste à s’y retrouver…

monde-web-services-jax-ws

JAX-WS

L’API JAX-WS permet au développeur d’effectuer des taches haut niveau sur les services web (manipuler l’en tête, enveloppe…). En arrière plan JAX-WS utilise l’API de bas niveau SAAJ (voir plus bas).

En particulier, l’API JAX-WS (Java API for XML Web Services) , qui était fournie avant java 6 sous forme d’une librairie tierce, fait désormais partie de java 6.

tutoriel-creation-webservice-java-6-api-jax-ws

SAAJ

L’API SAAJ permettra au développeur d’effectuer des taches bas niveau sur les services web (manipuler l’en tête, enveloppe…).

 A partir de la documentation Java 6, identifiez le package javax.xml.soap de l’API SAAJ :

tutoriel-creation-webservice-java-6-api-saaj

Métadonnées

 A partir de la documentation Java 6, identifiez les packages suivants :

— Package javax.jws

tutoriel-creation-webservice-java-6-api-javax-ws

— Package javax.jws.soap

tutoriel-creation-webservice-java-6-api-javax-ws-soap

Ces packages fournissent les annotations (métadonnées) permettant , à haut niveau de créer et utiliser les web services. Une occasion pour le développeur de masquer la complexité inhérente aux web services.

Méthodologie développement web service

2 approches s’opposent : l’approche ‘bottom-up’ (à partir du code source Java de l’interface du service web) et l’approche top-down (à partir de l’interface WSDL du service web).

Nous allons ici mettre en oeuvre l’approche ‘bottom-up’ :

1) Création de l’interface java du service (optionnel)

2) Création de l’implémentation du service (obligatoire)

3) Publication du service web (obligatoire)

QUESTION : citez 3 inconvénients de cette approche de développement de service web.

Partie 1 : interface

Le web service que nous allons créer expose une seule opération : ditBonjour()

tutoriel-webservice-creation-webservice-java6-simple-3

 Compilez

 A partir de la javadoc de l’API JAX-WS, Expliquez l’annotation @WebService (javax.jws.WebService)

 a quoi sert l’annotation @SoapBinding ?

 Qu’est ce que le style RPC ? Existe t’il d’autres ‘Style’ ? Lesquels ? Quelles différences avec RPC ?

Partie 2 : implémentation

tutoriel-webservices-installation-metro-integration-tomcat-4

 Analysez le code suivant

 Compilez

Partie 3 : publication

 Analysez le programme suivant.

tutoriel-webservice-creation-webservice-java6-simple-5

 Compilez

 Lancez le programme :

tutoriel-webservice-creation-webservice-java6-simple-1

Partie 4 : Test

 Que se passe t’il aux adresses suivantes :

— http://localhost:8888

— http://localhost:8888/hello

récupération WSDL

Par convention , vous pouvez récupérer le WSDL d’un service web en ajoutant la chaine ‘?wsdl’ à la fin de l’URL du service web.

 Allez sur http://localhost:8888/hello?wsdl

tutoriel-webservice-creation-webservice-java6-simple-6

 En utilisant les spécifications WSDL 1.1, expliquez les principales sections du WSDL :

— types

— message

— port-type

— bindings

— service

 Lancez un nouveau navigateur, et allez sur http://localhost:8888/hello ?wsdl . Que se pass t’il ?

Refactoring : WebResult et WebParam

 Mettez en évidence l’impact de l’annotation @WebResult suivante …

webResult1.png

… sur le WSDL

webResult2.png

 Expliquez

 Mettez en évidence l’impact de l’annotation @WebParam sur le WSDL. En particulier, montrez qu’il est possible de remplacer la chaîne ‘arg0’ par une chaîne de votre choix plus explicite, comme ‘requete’.

Limitations

1) Notre code ne sait pas gérer plusieurs appels au service web (multithreading).

INFO : l’utilisation d’un serveur d’application permet de gérer ce problème (1 thread par utilisateur)

2) Notre WSDL impose un protocole de transport (ici http, déclaré dans la section ‘services’).

INFO : la spécification WS-Adressing répond à cette problématique.

Partie 5 : Modifier le Binding RPC –> DOCUMENT

 Remplacez dans la définition de l’interface du service web la ligne 7 (@SOAPBinding(style = SOAPBinding.Style.RPC)) par @SOAPBinding(style = SOAPBinding.Style.DOCUMENT)

 Analysez l’impact sur le WSDL produit

tutoriel-webservice-jaxws-binding-jaxb-0-12

 Expliquez

 Quelle valeur ajoutée ?

CORRECTION (projet Java)

demosoap

Clients du web service

En utilisant le Tutoriel Clients web services, proposez un client Java pour le web service.

Analyse trames SOAP

En utilisant le Tutoriel Analyse communication client / web service, analysez les trames et messages SOAP entre le client et le service.

Partie 6 : services plus complexe

Notez que le web service était simple : paramètre simple String pour la méthode ditBonjour(), et type de retour simple (ici chaîne). Mais comment gérer un service web qui doit gérer et retourner des types Objets ? Comment coder le client du service web ?

 Proposez un service web mettant en oeuvre des types (métier) complexes.

Trouvez des réponses claires à ces questions en participant à notre formation WebServices.

Conclusion

Dans ce tutoriel, vous avez créez puis déployé un web service en utilisant l’implémentation de JAX-WS présente dans votre JDK.

2018-01-30T15:55:23+01:00

Contactez nous

241 rue DUGUESCLIN, 69003 Lyon

Web : Objis : spécialiste formation Java