Cours Architecture et Implementation Service Web SOAP avec JAX-WS et WSDL Web Services
Télécharger PDFIntroduction aux Services Web
Ce document aborde les services web, spécifiquement l'implémentation de services web SOAP, en explorant les technologies associées et leur mise en œuvre en Java via JAX-WS. Il est destiné aux étudiants du département informatique, Faculté MI, Université Batna2 (2020).
Service Web SOAP et Technologies Associées
L'architecture des services web repose essentiellement sur des technologies clés qui assurent leur interopérabilité et leur découverte.
Technologies Fondamentales
- Protocole SOAP (Simple Object Access Protocol) : Un protocole basé sur XML pour échanger des informations structurées dans l'implémentation de services web. Il permet la communication entre applications hétérogènes.
- Langage WSDL (Web Services Description Language) : Un langage de description basé sur XML utilisé pour décrire les fonctionnalités offertes par un service web, comment y accéder, et quels messages il attend ou renvoie.
- Annuaire UDDI (Universal Description, Discovery, and Integration) : Un registre distribué pour les services web, permettant de les publier et de les découvrir.
WSDL, SOAP et HTTP sont les couches de base qui permettent l'interopérabilité des services web.
Afin d'être découvert, un service doit être publié. Au-dessus de ces trois couches de base, deux couches UDDI viennent se greffer :
- Un service est publié via son document WSDL auprès d'un annuaire UDDI.
- Une application cliente peut découvrir et accéder à ce service lors de son exécution en interrogeant l'annuaire UDDI.
Protocole SOAP
SOAP est un protocole standardisé pour l'échange de messages structurés dans les services web. Un message SOAP est un document XML qui contient une enveloppe, un en-tête optionnel et un corps.
Structure d'un Message SOAP
Un message SOAP typique comprend :
- Une enveloppe (
<Envelope>) qui définit le début et la fin du message. - Un en-tête (
<Header>) optionnel contenant des informations spécifiques à l'application (comme la sécurité ou la gestion de transactions). - Un corps (
<Body>) qui contient les informations réelles du message, comme l'appel d'une méthode et ses paramètres, ou le résultat d'un appel. - Une section de fautes (
<Fault>) optionnelle utilisée pour signaler les erreurs.
Exemple de Message SOAP
Considérons l'implémentation d'un service web appelé "MathTeacher". Un message SOAP pourrait être utilisé pour appeler une méthode telle que "addition" avec deux nombres, et un autre message SOAP contiendrait le résultat de cette opération.
Le Langage WSDL
Le WSDL (Web Services Description Language) est un format XML pour la description de services web en tant qu'ensemble de points de terminaison opérationnels sur des messages contenant des informations orientées document ou procédure.
Document WSDL
Un document WSDL décrit précisément l'interface publique d'un service web, incluant :
- Les types de données utilisés.
- Les messages échangés.
- Les opérations offertes (méthodes).
- Les protocoles de communication et adresses réseau utilisés.
WSDL - Définition des types
Cette section définit les types de données complexes (structures, classes) qui seront échangés entre le client et le service, souvent en utilisant le schéma XML (XSD).
WSDL - Définition des messages et ports
Les messages décrivent les données échangées pour une opération donnée (entrées et sorties). Les "ports" (ou points de terminaison logiques) regroupent les opérations disponibles.
WSDL - Définition des bindings
Les bindings spécifient le format des messages et le protocole de communication pour chaque port, par exemple SOAP sur HTTP.
WSDL - Définition du service
La définition du service regroupe un ensemble de ports de terminaison (endpoints) sous un même nom logique, chacun ayant une adresse physique (URL).
UDDI (Universal Description, Discovery, and Integration)
UDDI est un annuaire public ou privé où les fournisseurs de services peuvent publier leurs services web, et où les consommateurs de services peuvent les rechercher. Il agit comme un "pages jaunes" pour les services web, facilitant leur découverte dynamique.
Un enregistrement UDDI contient des informations détaillées sur l'entreprise fournissant le service, les services qu'elle offre, et les détails techniques pour y accéder (généralement un lien vers le document WSDL du service).
Mise en Œuvre des Services Web SOAP avec JAX-WS
JAX-WS (Java API for XML Web Services) est une technologie Java standard pour la création de services web basés sur SOAP et XML, et de clients pour ces services. Elle simplifie grandement le développement grâce à des annotations et des outils de génération de code.
Architecture (Client Java)
Voici comment un client Java interagit avec un service web SOAP via JAX-WS :
- Le client demande au stub (proxy côté client, généré à partir du WSDL) de faire appel à une méthode (ex:
conversion()). - Le stub se connecte au skeleton (code côté serveur, également généré) et lui envoie une requête SOAP, sérialisant les paramètres de l'appel de méthode.
- Le skeleton désérialise la requête SOAP et fait appel à la méthode correspondante du service web implémenté.
- Le service web exécute la logique métier et retourne le résultat au skeleton.
- Le skeleton sérialise le résultat dans une réponse SOAP et l'envoie au stub.
- Le stub désérialise la réponse SOAP et fournit le résultat à l'application cliente.
Architecture (Client JSP)
Un client JSP peut également être utilisé pour interagir avec un service web SOAP via JAX-WS. Le processus sous-jacent est similaire à celui d'un client Java standard, mais l'intégration se fait dans le contexte d'une application web basée sur JSP, où la logique d'appel du service est souvent encapsulée dans des JavaBeans ou des servlets appelés depuis les pages JSP.
Comment développer un service web SOAP avec JAX-WS
Le développement d'un service web SOAP avec JAX-WS implique généralement les étapes suivantes :
- Définition de l'interface du service (SEI - Service Endpoint Interface) en Java.
- Implémentation de cette interface.
- Annotation de la classe d'implémentation avec
@WebService. - Publication du service (par exemple, via un serveur d'applications comme Tomcat ou GlassFish, ou avec le serveur léger JAX-WS
Endpoint.publish()). - Génération du client à partir du WSDL (avec des outils comme
wsimport). - Développement de l'application cliente pour consommer le service.
Foire Aux Questions (FAQ)
- Quelles sont les trois technologies de base pour l'interopérabilité des services web ?
- Les trois technologies de base sont WSDL (Web Services Description Language), SOAP (Simple Object Access Protocol) et HTTP (Hypertext Transfer Protocol). WSDL décrit le service, SOAP définit le format des messages et HTTP est le protocole de transport le plus courant.
- Quel est le rôle principal de UDDI dans l'écosystème des services web ?
- UDDI (Universal Description, Discovery, and Integration) sert d'annuaire ou de registre. Il permet aux fournisseurs de services web de publier leurs services et aux consommateurs de les découvrir dynamiquement, facilitant ainsi l'intégration de services sans connaissance préalable de leur emplacement.
- Comment un client Java interagit-il avec un service web SOAP en utilisant JAX-WS ?
- Le client Java utilise un "stub" (proxy) généré à partir du WSDL du service. Le stub sérialise l'appel de méthode Java en un message SOAP et l'envoie au "skeleton" côté serveur. Le skeleton désérialise le message, appelle la méthode réelle du service web, et renvoie le résultat au stub via une réponse SOAP, qui est ensuite désérialisée et retournée au client.