mardi 11 août 2009

Groovy,Grails & Web service: Consommer simplement un web service

Question : comment consommer simplement un web service

Réponse : avec groovy, très simplement en 3 lignes de code

Nous allons utiliser le webservice crée à l’occasion du billet suivant : Grails, Groovy, xFire & SoapUI : créer un web service et le tester en 22 lignes de codes, 7 commandes et 5 minutes

Les étapes sont simples

Etape 1 : installer Groovy

Voir ce lien :

Etape 2 (optionnel): créer un projet Groovy avec Eclipse ou avec STS (Springsource Tool Suite, la version free et conseillée pour ce type de projet)

Télécharger à partir du lien suivant: http://www.springsource.com/products/springsource-tool-suite-download

Etape 3 : ajouter la librairie nécessaire "groovyws-xxxx-0.5.0.jar »

Télécharger à partir de ce lien http://dist.codehaus.org/gmod/groovyws-minimal-0.5.0.jar

Etape 4 : créer le code pour consommer le web service (le WSDL est définie ici)


1:  def proxy = new WSClient("http://localhost:8080/webservice-xfire/services/role?wsdl", this.class.classLoader)
2: proxy.initialize()
3: def result = proxy.getRoles()
4: // utilization de la réponse
5: assert result.getClass().name=="com.oxia.att.grails.ArrayOfRole"
6: def role=result.role[0]
7: assert role.name.getClass().name=='javax.xml.bind.JAXBElement'
8: println 'NS ' +role.name.getName()
9: println 'Valeur ' +role.name.getValue()

( l’a classe Role possède une propriété ‘name’)

Explication :

dans ce usage; Groovy se base sur CXF (avec la version SOAP version: 1.1 pour le moment et présente ces deux classes org.apache.cxf.endpoint.dynamic.DynamicClientFactory et groovyx.net.ws.AbstractCXFWSClient getBindingOperationInfo)

en se basant sur le WSDL il va créer dynamiquement les classes nécessaires

  • com.oxia.att.grails.ArrayOfRole,
  • com.oxia.att.grails.GetRoles,
  • com.oxia.att.grails.GetRolesResponse,
  • com.oxia.att.grails.ObjectFactory,
  • com.oxia.att.grails.Role,
  • com.oxia.att.grails.ServiceMethod,
  • com.oxia.att.grails.ServiceMethodResponse

    Les résultats sont retournés dans un objet crée à la volé (com.oxia.att.grails.ArrayOfRole) et sont de type javax.xml.bind.JAXBElement.

    Qui contient le nameSpace : {http://grails.att.oxia.com}name

    Et la valeur : admin

    Pour ceux qui pensent que la manipulation des résultats n’est pas évidente, il est temps de se rappeler que Groovy vous permet de créer vos propre méthodes de manipulations dynamiquement.

    Ça permet de simplifier la manipulation des objets …javax.xml.bind.JAXBElement

  • C'est ici que se manifeste la puissance de Groovy en tant que langage dynamqiue avec sa capacité à manipuler les Closures ..

    Mais ceci est autre sujet …

    Lien utile:

  • Consuming a web service with Groovy Web Service
  • Groovy Web Service
  • Groovy Web Service installation

    autres sujets : Groovy & Grails

  • Tomcat, Spring, Grails, Groovy : dans le giron de Vmware
  • Groovy & Grails : L’instabilité en vue du coté JRuby, une opportunité de plus pour Groovy & Grails
  • Groovy et Grails dans le giron de SpringSource : Un bel avenir pour les langage dynamique
  • 0 commentaires :

    Enregistrer un commentaire

    Architecte SOA & Professionnel Open Source Headline Animator

     
    Khaled BEN DRISS
    Cloud Computing, SOA et Web 2.0 : Des sujets techniques sur SOA et l'Open Source : de Java & .Net, PHP5, Symfony, à SaaS / PaaS en passant par Azure, google appengine, le BPM, la Modélisation et d'autres sujets du coté du serveur et cloud computing.