Préambule : Avant de commencer, s’agissant de publier des services, je rappelle que je reste adepte du concept Contrat-first. Mais, ce tutoriel est destiné à montrer la puissance de l’approche Grails. Il doit être affiné pour suivre l’approche contract-first. Qu'il s'agisse d'une solution java développée 'from scratch' ou basée sur du 'java software' payé en $$ ou sur du .net basée sur Biztalk : l'essentiel c'est que le contrat soit défini dès le début
Question : comment créer un web service en exposant la liste à partir d’une base de données
Contexte : confronté, sur un nouveau projet, à une demande du client qui souhaite rapidement : apprendre à consommer des web services, dans un projet classique JSF/Spring/Hibernate . L’idée est d’utiliser Spring webservice template, mais, Il a fallu fournir des web services rapidement, pour les consommer
Réponse : le simple c’est d’utiliser Grails (yes it's a java software from Spring cretors, based on Groovy : a dynamique java software from the Spring source ...)
Des webservices en moins de 5 minutes, 6 commandes et 22 lignes de codes …
En prime : les écrans de gestion de l’entité cible dans la base de donnée
Etape 1: installer Grails
http://www.objis.com/formation-java/tutoriel-grails-installation.html
Etape 2 : créer une application
(Commande 1)>grails create-app webservice-xfire
(Commande 2)>cd webservice-xfire
(Commande 3)>grails create-domain-class com.oxia.att.grails.Role
Ajouter ce code (en somme du Plain old Groovy objects, dit POGO)
1: package com.oxia.att.grails
2: class Role {
3: String name
4: static constraints = {
5: name(blank: false, size: 1..20)
6: }
7: public String toString() {
8: return name
9: }
10: }
(commande 4)>grails create-controller com.oxia.att.grails.Role
Etape 2 : installer le plugin xFire
http://www.grails.org/plugin/xfire
(commande 5)> grails install-plugin xfire
Etape 3 : générer les bases du service en relation avec le POGO Role
(commande 6)> grails create-service com.oxia.att.grails.RoleEtape 4 : ajouter un peu de code Groovy pour exposer le métier
1: class RoleService {
2: static expose=['xfire']
3: def serviceMethod(Role dc) {
4: return true
5: }
6: Role[] getRoles(){ Role.list() as Role[] }
7: }
Etape 5 : lancer
(commande 7)> grails run-apphttp://localhost:8080/webservice-xfire/services/role?wsdl
Avant de tester le web service : ajouter au moins 1 Role (le fameux admin…) ( les écrans d’administration ont été générés aussi)
Etape 6 : tester avec SoapUI
Créer un projet avec SOAP UT à partir du WSDL
SOAPUI va créer ce projet
Lancer le teste
Le résultat n’est pas « orienté » Contrat-first
Mais … avec du XPATH on pourra se débrouiller !
Avouons qu’il faut travailler encore le CONTRAT
Etape 7: statistique
Code utile : 22 lignes de codes (les tests unitaires sont aussi utiles mains non comptabilisées dans ce cas)
+----------------------+-------+-------+
| Name | Files | LOC |
+----------------------+-------+-------+
| Controllers | 1 | 4 |
| Domain Classes | 1 | 10 |
| Services | 1 | 8 |
| Unit Tests | 3 | 36 |
+----------------------+-------+-------+
| Totals | 6 | 58 |
( sans formatage de texte )Etape 8 : consommer le service
Utiliser Spring Web service template
Mais, ceci est un autre sujet--------------------------------------------------autres sujets Grails
-- 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
--------------------------------------------------
autres sujets à venir
- le concept Java 3G : Grails, Groovy et Google appengine
- les plugins Grails
0 commentaires :
Enregistrer un commentaire