TP-1 - Prise en main

De $1

Table des matières
aucun titre

Version de 14:26, 21 Mai 2024

cette version.

Revenir à liste des archives.

Voir la version actuelle

Ce TP réalisé dans le cadre du cours Web Services Miage NTDP a pour but de permettre aux étudiants de prendre en main le developpement d'un Web Service RESTFul en utlisant Jersey. L’idée est de développer une application (réelle) et d’essayer d’appliquer les concepts du cours. Nous proposons le développement d’une application de gestion d’une bibliothèque dans laquelle les étudiants ajouteront un module web Service afin d’exposer les entités de l’application comme ressource, pouvant être (ré) utilisée par d’autres applications serveurs et principalement des applications clientes (HTML5, Mobiles). Le modèle de données est présenté sur la figure ci-contre

Main.png

Dans le TP d'aujourd'ui, nous allons principalement exposer certaines ressources d'une application Web de type Java EE, mis à votre disposition pour ce TP et les autres qui vont suivre.  

 

Travaux    à    réaliser        

1.    Les travaux    à    réaliser    dans    le    cadre    de    ces    activités    consistent    à    :      

a.    Développer une    application    serveur    permettant    la    gestion    dun    modèle    de    données     

correspondant à    celui    de    la    figure    1         

b.    Administrer ce    modèle    dans    une    base    de    données    Relationnelles        

c.    Exposer les    entités    de    ce    modèle    dans    un    web    service    REST         

d.    Développer un    client    HTML5    permettant    de    manipuler    ce    modèle    depuis    une     

interface   web    (ordinateurs,    tablettes,    Smartphones)         

e.    Développer un    client    mobile    Android    permettant    à    un    abonné    de    la    bibliothèque    de    pouvoir consulter    les    livres    disponibles    et    deffectuer    un    prêt.            

Contraintes  

  1. Lapplication serveur    doit    être    réalisée    en    langage    Java    en    utilisant    les    EJBs         
  2. Le service    web    doit    être    de    type    REST         
  3. Le service    doit    supporter    les    formats    JSON    et    XML    
  4. L'IDE Netbeans est recommandé   

Etape 1: Récupérer l'aplication J2EE sur github 

URL du dépot :  https://github.com/eamosse/bibliotheque_ntdp.git

  • Repérer le fichier glassfish-resources.xml, créez une base de données dans Java DB ainsi qu'une resource JDBC à partir des informations contenues dans ce fichier. Pour créer la resource JDBC, trouver le fichier persistence.xml et dans data source, choisir new Datasource, remplir le formulaire qui s'affiche avec les données du fichier glassfish-resources.xml. 
  • Compilez et testez que tout fonctionne

Etape 2: Eposer les ressources de l'application J2EE dans un Web Service 

Maintenant que votre aplication web est prête, vous êtes prêts pour demarrer avec le TP.

  1. Ajouter un nouveau package dans le projet (fr.unice.miage.ntdp.bibliotheque.services) 
  2. Ajouter une nouvelle classe Java (Java Class) dans le package créé précedemment (CategorieRessource).  Cette classe exposera les instances de l'entité Categorie comme ressource dans le Web Service. 
  3. Ouvrir le fichier contenant les sources de la classe CategorieResource et ajoutez une annoation @Path ("categorie") sur le la classe 
@Path("categorie")
public class CategorieResource {

}

4. Remarquer l'apparition d'une ampoule et le trait jaune soulignant le nom le nom de la classe CategorieResource.  Elle vous signale d'un défaut de configuration de votre service Web.  En lieu et place d'un fichier de configuration, Jersey utilise une classe pour la gestion de la configuration du WS.  Cette classe indique au Framwork, les ressources exposées par le WS ainsi que le contexte du WS (ex. l'URI de base).

Cliquer sur l'ampoule et choisir l'option "Configure REST using Java EE 6 specification" , l'ampoule devrait disparaitre à la fin de cette opération. une nouvelle classe (ApplicationConfig.java) ainsi qu'un nouveau package (org.netbeans.rest.application.config) sont ajoutés à votre projet. 

A partir de Java EE 6, cette classe est proposée comme alternative aux paramètres du service dans le  fichier de configuration « web.xml ».    Ouvrir la classe Application Config dans votre éditeur et remarquer l’annotation @javax.ws.rs.ApplicationPath("webresources")    Observer bien les méthodes de cette classe, elles devraient réveiller votre mémoire  sur  certaines notions qu’on a vues en cours.  

5. Ajouter une méthode (hello) dans la classe CategorieResource qui renvoie la string Hello World. Exposez la méthode dans le service en indiquant le type de méthode HTTP auquel il est capable de répondre ainsi que le format des données qu'elle renvoie. 

@GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public String hello(){
        return "Hello World!";
    }

 6. Tester le WS 

Faire bouton droit sur le projet et choisir Test ResfFul Web Service.  Dans la fenêtre qui s'affiche choisir Web test Client in Project --> Browse --> Bibliotheque puis cliquer sur OK.  A la fin de cette opération, Netbeans lancera automatiquement une interface Web qui vous permettra de faire vos premiers tests.  

7. Ajouter une nouvelle méthode qui renverra la liste des categories disponibles dans la base de données. Faire hériter la classe CategorieRessource de AbstractFacade (qui se trouve dans le package bean). Ajouter une méthode list n'acceptant aucun paramètre et qui renvoie une liste de catégorie. La méthode doit répondre aux requetes HTTP de type GET et retourne les catégories au format JSON ou XML.

@GET
    @Produces({MediaType.APPLICATION_XML, MediaType.APPLICATION_JSON})
    public List<Categorie> list(){
        return super.findAll();
    }

 8. Testez 

9. Exercices à rendre au prochain cours 

Completez la resource Categorie en y ajoutant les méthodes: 

  • Update : Mettre à jour une catégorie existante (retourne la catégorie modifiée)
  • Create : Ajouter une nouvelle catégorie (retourne la catégorie)
  • Count : Retourne le nombre de catégorie dans la base 
  • FindByRange: Retourne une liste de categories dont les identifiants (ID) sont compris entre deux valeurs entières passées en paramètres.