jeudi 1 mars 2012

Spring WS

Les spécifications WebServices ont pour vocation de faire communiquer des applications hétérogènes par l'exposition de services métier.

Spring WS est spécialisé dans le développement, l'exposition et l'invocation des WebServices.

Côté Service, avec sa programmation par contrat (interface), Spring propose différentes stratégies à chaque étape de réalisation des WebServices:

  • Stratégie de génération de la WSDL.
  • Stratégies d'aiguillage vers les unités de traitement (contrat EndPointMapping).
  • Différentes approches d'implémentation des unités de traitement selon la manière de lire les données reçues par la requête et la manière de formater la réponse: (classes Abstraites mises à disposition) .
  • Stratégies de Mapping des données (contrat Marshaller et Unmarshaller et fournisseur JAXB, Castor, XStream etc...).

Enfin côté client, la classe WebServiceTemplate de Spring WS facilite les appels WS en intégrant différents mécanismes :
  • Des mécanismes de traitement du message (ajout d'élément avant envoi).
  • Des mécanismes de conversion de données etc...


Spring et les WebServices plus en détail :

1.   Mise en œuvre de services
·         Configuration
·         Définition des contrats des services (format xsd) 
o   Instance de SimpleXsdSchema
·         Exposition de la déclaration des services au format WSDL
o   Instance de DefaultWsdl11Definition ou SimpleWsdl11Definition
·         Choix de la stratégie d’accès aux endPoints (aiguillage vers la bonne entité de traitement)
o   Utilisation des classes :
§  PayLoadRootQNameEndPointMapping
§  SoapActionEndPontMapping
§  MethodEndPointMapping
·         Avec activation des annotations @PayLoadRoot ou @SimpleAction.
§  SimpleActionEndPointMapping
·         Unités de traitement, deux approches :
o   Avec les classes abstraites d’accès aux données
§  AbstractDomPayLoadEndPoint
§  AbstractJDomPayLoadEndPoint
§  AbstractDom4jPayLoadEndPoint
§  AbstractXomPayLoadEndPoint
§  AbstractSaxPayLoadEndPoint
o   Approche par mapping des données XML vers des objets java avec extension de la classe abstraite AbstractMarshallingPayLoadEndPoint avec injection d’une entité de mapping exemple CastorMarshaller.

2.    Mapping des données
§  Implémentation des interfaces Marshaller et UnMarshaller
o   JAXB 1 et 2, Castor XML, XML Bean etc…
§  Fichier de mapping

3.   Appels des services
§  Template Spring dédié à l’appel des WebServices : WebServiceTemplate

4.   Gestion des transports