Les services (WS-*) : SOAP/WSDL
- La quête de l'interopérabilité
- SOAP : structure des messages
- Web Service Description Language (WSDL)
- Développer un service Web SOAP
- Excercice : Accéder à un service Web
- Implémenter des services Web avec JAX-WS
- Déployer un service Web dans un serveur d'application Java EE
- Les outils Java de génération
- Consommer un service Web avec JAX-WS
- Excercice : Écrire un programme client d'un service Web
- Excercice : Écrire un service Web
- Pour aller plus loin
La quête de l'interopérabilité
Une problématique courante dans la mise en place de systèmes d'information et de savoir comment échanger des informations entre plusieurs processus. Cette problématique est souvent résumée par la notion d'interopérabilité. D'un point de vue technique, l'interopérabilité est rendue plus complexe par un ou plusieurs facteurs :
- les programmes sont écrits dans des langages différents
- les processus s'exécutent sur des machines différentes
- les machines appartiennent à des réseaux différents
Avant l'an 2000, on trouve des solutions telles que Sun RPC, CORBA, DCOM, RMI. À partir des années 2000, le succés des réseaux IP, de HTTP et de XML apporte une nouvelle perspective : définir un protocole d'échange de messages XML via HTTP entre deux processus.
Ce protocole originellement défini par Microsoft puis maintenu par le W3 s'appelle SOAP. Depuis SOAP a été enrichi de nombreuses spécifications et l'ensemble de ces technologies sont désignées sous le terme WS-*.
SOAP : structure des messages
SOAP est une recommandation pour l'échange de messages au format XML entre un expéditeur (SOAP sender) et un destinataire (SOAP receiver). La structure des messages SOAP est identique qu'elle provienne de l'expéditeur (requête) ou du destinataire (réponse). Un message est constitué par une enveloppe (SOAP envelope) qui peut contenir un en-tête (SOAP header) et ensuite une charge utile (SOAP body).
Pour une utilisation avec le protocole HTTP, le message doit être envoyé avec la méthode POST à l'URL du service (appelée aussi endpoint)
Du fait de son utilisation exclusive du XML pour la composition des messages, une bonne compréhension de SOAP nécessite une connaissance approfondie de XML (Cf. le complément au cours sur XML).
Un message SOAP est défini pour le namespace XML http://schemas.xmlsoap.org/soap/envelope/
SOAP définit un format pour un type de réponse particulière : une SOAP fault. Une SOAP fault signale un problème lors du traitement du service.
Web Service Description Language (WSDL)
La condition pour utiliser un service Web SOAP est de connaître les opérations disponibles et le format des messages autorisés en entrée et/ou en sortie de ses opérations. WSDL (Web Service Description Language) est un langage XML permettant la description complète d'un service Web. Ainsi un fichier WSDL est analysable par programme et on trouve des outils dans différents langages de programmation pour générer du code (les stubs) facilitant le développement des programmes (client ou serveur).
Développer un service Web SOAP
On distingue deux approches pour développer un service Web WS-* :
- Contract first
- On définit le contrat du service en spécifiant le WSDL et on utilise des outils pour générer le code des stubs.
- Contract last
- On développe le service et on utilise des outils pour générer le WSDL.