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)
- 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> - 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> - On décrit un porttype :
<portType>
décrit les opérations et les message impliqués
</portType> - 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