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.

Document source
Web Services, SOAP, WSDL · DOCX · 8 pages · 2014
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 (manufactureretmodel).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 contenantmanufactureretmodel). - Paramètre de retour (output) : Le message
GetEndorsingBoarderResponse(qui correspond au type complexe contenantendorsingBoarder). - 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>.
- Opération :
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) :
- Ligne 5 (Nom de l'opération) : Écrit
<m:GetEndorsBoarder, il manque "ing" pour correspondre au WSDL (GetEndorsingBoarder). - Ligne 5 (Syntaxe balise) : Il manque le chevron de fermeture
>pour clôturer correctement la balise ouvrante (lexmlnsde la ligne 6 devant idéalement être inséré avant de fermer cette balise). - Ligne 7 (Fermeture manufacturer) : La balise de fin est tronquée. Écrite
</manufacture>, elle devrait être</manufacturer>(oubli du 'r' final). - Ligne 8 (Ouverture model) : Écrit
<mode>, il manque le 'l' pour correspondre au type défini dans le WSDL (<model>). - Ligne 8 (Fermeture model) : Écrit
</mode>, il manque également le 'l' (</model>). - Ligne 9 (Fermeture opération) : Écrit
</m:GetEndorsBoarder>, il manque encore une fois "ing" (</m:GetEndorsingBoarder>). - 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 :
- Comprendre les liaisons (Bindings) : Repérez d'abord
<wsdl:service>en bas de fichier. Regardez son attributbindingpour remonter à<wsdl:binding>, qui vous donnera le protocole réseau (souvent HTTP) et le style SOAP. - 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). - 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). - 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.
Commentaires
Aucun commentaire pour le moment. Posez la première question.