mardi 26 juin 2012

Exercice 1.C


référence :
http://static.springsource.org/spring-ws/sites/1.5/reference/html/tutorial.html

Web Service :
Contract Last : on écrit d'abord le code Java et sur base de cela on génère le contrat après (WSDL)
Contract First : On écrit d'abord le contrat (WSDL) et on génère du Java à partir de là.

Rappel sur les dates :
ISO 8601 format : yyyy-mm-dd

D'une manière générale le XSD deviendra le Data Contract (qui définira le payload) :
Voir le rappel sur les XSD et le XSD final généré :

Une fois le data contract terminé on passe au Service Contract : Le WSDL
En général Spring WS sait générer le WSDL pour nous automatiquement

WSDL abstract parts : (doc xml utilisé pour localiser et décrire des webservices)
  1. definitions :<definitions>
    - namespaces
    - types <wsdl:types><xsd:schema xmlns>
    data type definition : décrits les types des paramètres impliqués dans le message
    </xsd:schema></wsdl:types>
  2. on définit le message : <wdsl:message>
    xsd décrivant la forme du message (data contract). Un peu comme les paramètres d'une fonction
    </wsdl:message>
  3. On décrit un porttype :
    <portType>
    décrit les opérations et les message impliqués
    </portType>
  4. Binding : on associe le message à un port type comme opération (le porttype sera utilisé dans le binding)
    <binding>
    protocoles et format de données
    </binding>
    </definitions>

Exemple : portType
<message name= »getTermRequest »>
<part name= »term » type= »xs:string » />
</message>
<portType name= »gloassaryTerms » />
<operation name= »getTerm »>
<input message= »getTermRequest » />
<output message= »getTermResponse » />
</operation>
</portType>
Dans ce cas de figure glossaryTerms peut être comparé à une librairie de fonction (ou classe?)
En gros le portType se comporte comme une classe accessible via le web.
Request-response est le mode de fonctionnement le plus commun.
Les autres types sont:
  • One-way : pas de réponse attendue (uniquement input est défini
  • Request-response : web request classique (stateless) : input / output
  • Solicit-response : l'appli va attendre la réponse (statefull?)
  • Notification : le serveur envoie un message mais n'attend pas de réponse

Le binding :
deux attributs :
  • name : nom du binding
  • type : pointe sur le port (une instance de porttype)

Le binding contient l'élément : soap:binding (style et transport)
  • style : rpc/document
  • transport : HTTP (mais pourrait-être autre chose : JMS)
Rmk on ne définit pas transport comme étant HTTP mais :

Le soapbinding contient l'élément opération :
définir l'opération que le portType expose
c'est là que l'on définit les requêtes http qui permettrond l'appel ex :
Il faut aussi spécifier les types d'entrées sortie : ex:literal


WSDL concrete part
on effectue un
  • binding qui indique au client comment invoker l'opération
  • service qui dit au client où la trouver (le binding sera utilise dans le port du service)

Voir le tutoriel pour explications complémentaires :

On crée le projet via Maven2
mvn archetype:create -DarchetypeGroupId=org.springframework.ws -DarchetypeArtifactID=spring-ws-archetype -DarchetypeVersion=1.5.9 -DgroupId=be.sdlg.ws -DartifactId=anovaWS

On obtien un répertoire src/main/webapp
Le servlet spring-ws est automatiquement crée et les requêtes redirigés vers lui.

3.6 Implementing the endpoint
Remarque sur les documents XML

Mieux vaut utiliser un name space lorsque l'on déclare un élément :
<ELEMENT xmlns= « http://www.sdlg.be/web/myapp/schemas »>
</ELEMENT>

Utliser plutôt
AnovaRequest (éviter les – car conversion vers Java class)

Aucun commentaire:

Enregistrer un commentaire