Introduction aux services WEB

Download Report

Transcript Introduction aux services WEB

WSDL
Web Services Description Language
Master MIAGE/ SID
Université NANCY2
Qu'est-ce que WSDL?
• Web Services Description Language
• Langage de description de services Web
– Définit de manière abstraite et indépendante du
langage, l'ensemble des opérations et des
messages qui peuvent être échangés avec un
service Web
• Egalement utilisé pour localiser les services
web
• XML (standard W3C – WSDL 1.2)
Que décrit-on ?
• Quelles sont les méthodes disponibles
publiquement ?
• Quels types de données sont utilisés dans
les requêtes et les réponses ?
• Quels sont les protocoles de transport à
utiliser ?
• Où est localisé le service ?
Pour quoi en faire ?
• Permettre aux applications de configurer
automatiquement les échanges
• Publier les fonctionnalités abstraites d'un
service dans un annuaire (UDDI)
La poule ou l'œuf ?
• Dans quel ordre ?
– Services
– Client
– WSDL
• Il existe des outils pour les deux
Format (simple)
types
definitions
message
portType
binding
service
message
• Définit un type de données échangées pour
une opération
– Basé sur xml-schema
• Composé de <part> (composition)
message
<message name="getTermRequest">
<part name="term" type="xs:string"/>
</message>
<message name="getTermResponse">
<part name="value" type="xs:string"/>
</message>
portType
• Spécifie les opérations disponible
(endpoint)
– Nom
– Paramètres en entrée
– Paramètres en sortie
portType
<portType name="glossaryTerms">
<operation name="getTerm">
<input message="getTermRequest"/>
<output message="getTermResponse"/>
</operation>
</portType>
binding
• Définit le format des messages et le détail
des protocoles utilisés
binding
<binding type="glossaryTerms" name="b1">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" />
<operation>
<soap:operation soapAction=""/>
<input> <soap:body use="literal"/> </input>
<output> <soap:body use="literal"/> </output>
</operation>
</binding>
Activité
• Créer un client JAX-WS qui invoque le
service METEO
– http://webservicex.net/globalweather.asmx
FIN
ARCHIVES
ACTIVITES
Activités
• Consulter et analyser :
http://www.xmethods.net/sd/2001/BNQuoteService.ws
dl
CLIENT SOAP
Anatomie d’un client SOAP
Informations extraites du fichier WSDL
private
private
private
private
private
private
String targetURI = "urn:xmethods-BNPriceCheck";
String encodingStyle = "http://schemas.xmlsoap.org/soap/encoding/";
String methodName = "getPrice";
String inputName = "isbn";
Class inputClass = String.class;
String url = "http://services.xmethods.net:80/soap/servlet/rpcrouter";
Anatomie d’un client SOAP
Méthode de l’API qui permet d’appeler le service
public float getPriceCall(String isbn) throws Exception{….}
Anatomie d’un client SOAP
Objet : Call
//création d'un objet Call
Call call = new Call();
call.setEncodingStyleURI(encodingStyle);
call.setTargetObjectURI(targetURI);
call.setMethodName(methodName);
Anatomie d’un client SOAP
Définition des paramètres du service
//définition des paramètres input
Vector v = new Vector();
v.add(new Parameter(inputName,inputClass,isbn,null));
call.setParams(v);
Anatomie d’un client SOAP
Invocation du service
//invocation du service
Response reponse = call.invoke(new URL(url),"");
Anatomie d’un client SOAP
Analyse de la réponse
//analyse de la réponse
if (reponse.generatedFault()){
throw new Exception("Réponse erronée");
}else{
Parameter result = reponse.getReturnValue ();
Float f = (Float) result.getValue();
prix = f.floatValue();
}
xsd
definitions
<?xml version="1.0"?>
soap
this
<definitions name="BNQuoteService"
targetNamespace="http://www.xmethods.net/sd/BNQuoteSe
rvice.wsdl"
xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns="http://schemas.xmlsoap.org/wsdl/"
xmlns:tns="http://www.xmethods.net/sd/BNQuoteService.
wsdl">
…
</definitions>
definitions
• Elément racine
• Contient les références globales aux espaces
de noms (namespace)
• Namespace : soap, xsd, soapenc, soapenv,
mime,…
portType
<message name="getPriceRequest">
<part name="isbn" type="xsd:string" />
</message>
<message name="getPriceResponse">
<part name="return" type="xsd:float" />
</message>
portType
<portType name="BNQuotePortType">
<operation name="getPrice">
<input message="tns:getPriceRequest" name="getPrice" />
<output message="tns:getPriceResponse"
name="getPriceResponse" />
</operation>
</portType>
binding
<binding name="BNQuoteBinding"
type="tns:BNQuotePortType">
<soap:binding style="rpc"
transport="http://schemas.xmlsoap.org/soap/http" /> <operation name="getPrice">
<soap:operation soapAction="" />
<input name="getPrice">
<soap:body use="encoded" namespace="urn:xmethodsBNPriceCheck"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding/
" />
</input>
…
</operation> </binding>
service
• Identifie le Web service
– Localise les URL et les ports
service
<service name="BNQuoteService">
<documentation>Returns price of a book at BN.com given
an ISBN number
</documentation>
<port name="BNQuotePort" binding="tns:BNQuoteBinding">
<soap:address
location="http://services.xmethods.net:80/soap/servlet/r
pcrouter" />
</port> </service>