Balises WSDL dans un service web et leurs équivalents Java

Exercice 1 - Services Web et SOAP Question 1 - Correspondances entre balises WSDL et termes Java Dans la spécification JAX-WS (Java API for XML Web Services), chaque concept de description de service (WSDL) se mappe vers un élément précis du langage Java.

D'après le document Balises WSDL dans un service web et leurs équivalents Java

Cet article a été rédigé automatiquement à partir du document source, puis vérifié avant publication.

Balises WSDL dans un service web et leurs équivalents Java

Document source

Exercice 1 - Services Web et SOAP

Question 1 - Correspondances entre balises WSDL et termes Java

Dans la spécification JAX-WS (Java API for XML Web Services), chaque concept de description de service (WSDL) se mappe vers un élément précis du langage Java. Voici les équivalences :

Balises WSDL Terme en Java
operation Méthode (Method)
portType Interface (Interface)
message Paramètres (arguments) et type de retour
service Classe d'implémentation (Class of package)
type Classes de données ou types primitifs (Beans / Java Types)

Question 2 - Correspondance de l'extrait SOAP vers une méthode Java

La bonne réponse est l'option 4 : String order(String partName, String quantity) (ou potentiellement l'option 5 Aucune si l'on est très strict sur le type de retour, mais l'option 4 est la réponse attendue pour les paramètres).

Justification : L'extrait SOAP représente un appel de procédure (RPC). Dans le corps (<s:Body>), le premier élément <order> indique le nom de la méthode à invoquer. Les éléments enfants <partName> et <quantity> représentent les paramètres de cette méthode, dans l'ordre d'apparition. Leurs attributs xsi:type="string" indiquent clairement que ces deux arguments sont du type chaîne de caractères. L'option 4 est la seule dont la signature correspond exactement au nom de la méthode (order) ainsi qu'à l'ordre et aux types des arguments (String partName, String quantity). Bien que l'enveloppe de requête ne renseigne pas le type de retour, cette signature est la seule compatible avec les données entrantes.

Question 3 - Analyse de l'extrait du fichier WSDL

En inspectant le document WSDL fourni en annexe, nous pouvons extraire les informations suivantes :

1. Le nom du « web service » Le nom du service se trouve dans la balise <wsdl:service>.

  • Réponse : EndorsementSearchService (défini à la ligne <wsdl:service name="EndorsementSearchService">).

2. Les types de données décrits dans le langage XML Les types de données sont définis dans la section <wsdl:types>, via un schéma XML (<xsd:schema>).

  • Réponse : Trois types complexes sont définis :
    • GetEndorsingBoarder : contient deux chaînes de caractères (manufacturer et model).
    • GetEndorsingBoarderResponse : contient une chaîne de caractères (endorsingBoarder).
    • GetEndorsingBoarderFault : contient une chaîne de caractères (errorMessage).

3. Les opérations, les paramètres et le mode de transport Ces éléments sont définis dans les sections <wsdl:portType> (pour les opérations et messages) et <wsdl:binding> (pour le transport).

  • Réponse :
    • Opération : GetEndorsingBoarder
    • Paramètre d'appel (input) : Le message GetEndorsingBoarderRequest (qui correspond au type complexe contenant manufacturer et model).
    • Paramètre de retour (output) : Le message GetEndorsingBoarderResponse (qui correspond au type complexe contenant endorsingBoarder).
    • Mode de transport : Le protocole HTTP est utilisé, comme l'indique l'attribut transport="[http://schemas.xmlsoap.org/soap/http](http://schemas.xmlsoap.org/soap/http)" dans la balise <soap:binding>.

Question 4 - Signification de l'encodage "literal"

Ligne à analyser :

<soap:body use="literal" namespace="http://schemas.snowboard-info.com/EndorsementSearch.xsd"/>

Signification : L'attribut use="literal" indique que le contenu de la balise <soap:body> doit être validé exactement (littéralement) selon le schéma XML (XSD) fourni. Contrairement au mode use="encoded" qui applique des règles de formatage spécifiques à SOAP (comme le SOAP-Encoding), le mode "literal" signifie que le message XML transmis respectera purement et simplement la structure définie par le développeur dans le schéma XSD cible spécifié par le namespace.

Question 5 - Erreurs de syntaxe dans le message requête SOAP

Le document extrait comporte des erreurs typographiques dues à une saisie incorrecte (ou à la déformation du texte). En comparant la requête avec les définitions exactes du WSDL fourni en annexe (qui exige GetEndorsingBoarder, manufacturer et model), on identifie sept erreurs de syntaxe.

Voici le code corrigé, suivi de la liste des erreurs identifiées et réparées :

<SOAP-ENV:Envelope
   xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
   SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
   <SOAP-ENV:Body>
      <m:GetEndorsingBoarder xmlns:m="http://namespaces.snowboard-info.com">
         <manufacturer>K2</manufacturer>
         <model>Fatbob</model>
      </m:GetEndorsingBoarder>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

Justification des 7 erreurs (telles que présentes dans le texte brut) :

  1. Ligne 5 (Nom de l'opération) : Écrit <m:GetEndorsBoarder, il manque "ing" pour correspondre au WSDL (GetEndorsingBoarder).
  2. Ligne 5 (Syntaxe balise) : Il manque le chevron de fermeture > pour clôturer correctement la balise ouvrante (le xmlns de la ligne 6 devant idéalement être inséré avant de fermer cette balise).
  3. Ligne 7 (Fermeture manufacturer) : La balise de fin est tronquée. Écrite </manufacture>, elle devrait être </manufacturer> (oubli du 'r' final).
  4. Ligne 8 (Ouverture model) : Écrit <mode>, il manque le 'l' pour correspondre au type défini dans le WSDL (<model>).
  5. Ligne 8 (Fermeture model) : Écrit </mode>, il manque également le 'l' (</model>).
  6. Ligne 9 (Fermeture opération) : Écrit </m:GetEndorsBoarder>, il manque encore une fois "ing" (</m:GetEndorsingBoarder>).
  7. Ligne 10 (Fermeture du Body) : Écrit <SOAP-ENV:Body>, il s'agit d'une balise d'ouverture au lieu d'une balise de fermeture. Il manque le slash initial : </SOAP-ENV:Body>.

Méthode

Pour aborder efficacement un examen sur les services Web et WSDL, il est crucial d'adopter une lecture "ascendante" ou "descendante" du fichier WSDL, car ce dernier est un document très structuré et lié par références :

  1. Comprendre les liaisons (Bindings) : Repérez d'abord <wsdl:service> en bas de fichier. Regardez son attribut binding pour remonter à <wsdl:binding>, qui vous donnera le protocole réseau (souvent HTTP) et le style SOAP.
  2. Identifier les opérations : Le <wsdl:binding> référence un <wsdl:portType>. C'est là que vous trouvez le cœur fonctionnel : le nom des méthodes (opérations), ainsi que leurs messages d'entrée (input) et de sortie (output).
  3. Inspecter les données : Chaque message pointe vers une balise <wsdl:message>, qui à son tour pointe vers une définition de la section <wsdl:types>. C'est ici que l'on vérifie l'orthographe exacte et le type primitif des variables attendues (ex: string, integer).
  4. Rigueur typographique : En technologie XML, la moindre omission d'une lettre (comme "ing" manquant ou "mode" au lieu de "model") brisera l'analyseur (parser). Il faut lire le code lettre par lettre.

Partager

Commentaires

Aucun commentaire pour le moment. Posez la première question.

Les commentaires sont relus avant publication. Votre e-mail n'est jamais affiché.

← Toutes les révisions