ifproject - implémentation d'un Web Service financier et du client J2ME correspondant
3.3.3. Décrire le WS – le document WSDL

Citons à nouveau la définition des WS proposée par le W3C :

It has an interface described in a machine-processable format (specifically WSDL).

Nous l’avons vu, une fois disponible (déployé), un WS est destiné à être accessible via une grande diversité d’applications écrites dans des langages divers et tournant sur des plateformes multiples. Il est donc nécessaire que du coté client, on ait un mode d’emploi précis sur la façon d’accéder aux services proposée, qui permette de développer de façon adéquate l’application cliente.

Ce fichier, pourrait à la rigueur, pour un WS simplissime être écrit à la main. Dans la pratique cette tâche devient extrêmement fastidieuse pour un web service réel. Pour s’en convaincre, jetons un coup d’œil à l’exemple ci-dessous, correspondant à un service renvoyant une liste de mots (en fait une liste de code d’actions cotées en bourse) :

  <?xml version="1.0" encoding="UTF-8"?>
  <wsdl:definitions targetNamespace=http://localhost:8080/axis/services/J2MEWS
			       	xmlns:apachesoap=http://xml.apache.org/xml-soap 
			       	xmlns:impl=http://localhost:8080/axis/services/J2MEWS
				xmlns:intf=http://localhost:8080/axis/services/J2MEWS
				xmlns:wsdl=http://schemas.xmlsoap.org/wsdl/
				xmlns:wsdlsoap=http://schemas.xmlsoap.org/wsdl/soap/
				xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <!--WSDL created by Apache Axis version: 1.3 …-->
	
    <wsdl:types>
      <schema elementFormDefault="qualified" 
    	  targetNamespace=http://localhost:8080/axis/services/J2MEWS
	  xmlns="http://www.w3.org/2001/XMLSchema">
        <element name="getTitresDisponiblesReturn">
          <complexType>
	    <sequence>
	      <element maxOccurs="unbounded" minOccurs="0" 
	    		  name="item" type="xsd:string"/>
	    </sequence>
	  </complexType>
        </element>
      </schema>
    </wsdl:types>

    <wsdl:message name="getTitresDisponiblesResponse">
      <wsdl:part element="impl:getTitresDisponiblesReturn" 
    		    name="getTitresDisponiblesReturn"/>
    </wsdl:message>
  
    <wsdl:message name="getTitresDisponiblesRequest">
    </wsdl:message>

    <wsdl:portType name="J2MEWS">
      <wsdl:operation name="getTitresDisponibles">
        <wsdl:input message="impl:getTitresDisponiblesRequest" 
      		       name="getTitresDisponiblesRequest"/>
	<wsdl:output message="impl:getTitresDisponiblesResponse" 
	  		name="getTitresDisponiblesResponse"/>
      </wsdl:operation>
    </wsdl:portType>

    <wsdl:binding name="J2MEWSSoapBinding" type="impl:J2MEWS">
      <wsdlsoap:binding style="document" 
      			   transport="http://schemas.xmlsoap.org/soap/http"/>
      <wsdl:operation name="getTitresDisponibles">
        <wsdlsoap:operation soapAction=""/>
        <wsdl:input name="getTitresDisponiblesRequest">
	  <wsdlsoap:body use="literal"/>
        </wsdl:input>
        <wsdl:output name="getTitresDisponiblesResponse">
	  <wsdlsoap:body use="literal"/>
        </wsdl:output>
      </wsdl:operation>
    </wsdl:binding>
		
    <wsdl:service name="J2MEWSService">
      <wsdl:port binding="impl:J2MEWSSoapBinding" name="J2MEWS">
        <wsdlsoap:address location="http://localhost:8080/axis/services/J2MEWS"/>
      </wsdl:port>
    </wsdl:service>
  </wsdl:definitions>

Précisément, la description WSDL, qui est en fait un fichier XML, décrit les trois propriétés fondamentales d’un web service :

De façon symétrique, coté client, il s’agirait de même à partir de ce même document de créer l’interface permettant d’accéder au informations du service.

C’est la raison pour laquelle il existe des outils permettant de générer automatiquement cette description WSDL à partir du code des opérations du WS. Nous abordons ce point dans la section suivante.

  • <<
  •  
  • >>