IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

REST Discussion :

Exposer un Service CRUD RestFul avec JBoss RestEasy [Tutoriel]


Sujet :

REST

  1. #1
    Membre régulier Avatar de dgouyette
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 75
    Points : 89
    Points
    89
    Par défaut Exposer un Service CRUD RestFul avec JBoss RestEasy
    Bonjour à tous,

    J'ai écrit un article intitulé "Exposer un Service CRUD RestFul avec Jboss RestEasy".

    L'objectif de cet article est d'illustrer l'utilisation de ce framework REST via la réalisation d'un CRUD codé en approche Test Driving Learning

    Merci pour vos commentaires.

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Merci
    Petite question :
    Comment RestEasy sait qu'il faut appeler HelloResource ? Il doit manquer une ligne de paramétrage, non ?

    Il y a bien @Path("hello"), mais comment savoir que cette classe doit être "scannée" ? Resteasy fait un scan automatique de toutes les classes de l'application web ayant l'annotation @Path ?

  3. #3
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    J'ai utilisé avec Jersey, et cela se fait bien automatiquement.

  4. #4
    Membre régulier Avatar de dgouyette
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    75
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 75
    Points : 89
    Points
    89
    Par défaut
    Tu dois indiquer à ton application, quelles sont les ressources gérées :
    Dans la classe SampleApplication :

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public class SampleApplication extends Application {
    ...
     public SampleApplication() {
            singletons.add(new ContactResource());
            singletons.add(new HelloResource());
        }
    ...

    Dans ton web.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <context-param>
            <param-name>javax.ws.rs.Application</param-name>
            <param-value>com.cestpasdur.samples.restannuaire.resources.SampleApplication</param-value>
        </context-param>

    Il me semble que c'est dans la spec, donc tous les frameworks REST implémentant cette spéc devront le faire de cette façon.

  5. #5
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Non, pas d'Apllication, mais Netbeans me crée ceci quand j'utilise l'assistant de web services Restful :

    web.xml
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     <servlet>
            <servlet-name>ServletAdaptor</servlet-name>
            <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>ServletAdaptor</servlet-name>
            <url-pattern>/ws/*</url-pattern>
        </servlet-mapping>

    Netbeans me crée également un fichier rest-build.xml pour Ant.

    Log de Glassfish lors du deploying
    Scanning for root resource and provider classes in the paths:
    E:\edupassion\xseditor\build\web\WEB-INF\lib
    E:\edupassion\xseditor\build\web\WEB-INF\classes
    Root resource classes found:
    class xseditor.controller.PropositionController
    class xseditor.controller.UserController
    Provider classes found:
    PropositionController et UserController sont les deux classes utilisant l'annotation @PATH().

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    Intéressant post

    Néanmoins, connaissant bien SOAP mais trop novice en REST..., je me suis inspiré de ce mémo pour ce 1er exemple...

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    @Path("rest")
    public interface MyInterface
    {
       @GET
       @Path("value")
       public long getValue();
     
       @PUT
       @Path("value")
       @Consumes("application/xml")
       public void seValue(long value);
    }

    Question: pourquoi la 1ère requête est-elle OK mais pas la 2nde ??
    GET http://localhost:8080/myInterface/rest/value
    => 200 OK

    PUT http://localhost:8080/myInterface/rest/value HTTP/1.1
    Accept-Encoding: gzip,deflate
    Content-Type: application/xml
    User-Agent: Jakarta Commons-HttpClient/3.1
    Host: localhost:8080
    Content-Length: 25
    <long>2000</long>
    => 400 BAD REQUEST

    Cette dernière commande, remplacée en "2000" renvoie :
    => 204 No Content

    Mon "Body..." est probablement mal formaté?... mais comment l'écrire Svp ??

    Merci,

    Cordialement.

  7. #7
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Essaye avec les balises <?xml ... ?>.

    J'ai pas compris le coup de "Cette dernière commande, remplacée en "2000" renvoie "

    Sinon le parametre value de ta requete PUT est mal fichue. Soit tu lis ton parametre dans le xml, soit tu utilises

    Code java : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @PUT
    @Path("{value}")
    @Consumes("application/xml")
    public void setValue(@PathParam("value") long value) {...}
    et tu fais une requete vers /rest/2000, où 2000 est injectée comme value.

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    Merci bien pour la précision ; ça fonctionne ...

  9. #9
    En attente de confirmation mail

    Homme Profil pro
    Inscrit en
    Juillet 2006
    Messages
    766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 766
    Points : 1 267
    Points
    1 267
    Par défaut
    Citation Envoyé par movie_voip Voir le message
    Merci bien pour la précision ; ça fonctionne ...
    Waouw, je le note pour un jour où je voudrais redorer mon égo personnel.

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    bonjour a tous,
    comment récupérer les sources de ce projet ? les sources sont dans un zip sur un serveur ftp qui me demande un login / password
    merci de votre aide.

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    7 856
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 7 856
    Points : 34 380
    Points
    34 380
    Par défaut
    Citation Envoyé par mackristof Voir le message
    bonjour a tous,
    comment récupérer les sources de ce projet ? les sources sont dans un zip sur un serveur ftp qui me demande un login / password
    merci de votre aide.
    Erreur dans l'url, avec ca ca ira mieux : http://dgouyette.developpez.com/tuto...sy/sources.zip

  12. #12
    Membre confirmé
    Avatar de geforce
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2010
    Messages
    1 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 055
    Points : 559
    Points
    559
    Par défaut
    J'ai une erreur avec votre code source. quand je fait un mvn jetty:run
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    e-maven-3.2.3\bin\mvn.bat jetty:run
    [INFO] Scanning for projects...
    [WARNING]
    [WARNING] Some problems were encountered while building the effective model for
    com.cestpasdur.samples:restsample:war:1.0-SNAPSHOT
    [WARNING] 'build.plugins.plugin.version' for org.apache.maven.plugins:maven-sure
    fire-plugin is missing. @ line 74, column 21
    [WARNING] The expression ${artifactId} is deprecated. Please use ${project.artif
    actId} instead.
    [WARNING]
    [WARNING] It is highly recommended to fix these problems because they threaten t
    he stability of your build.
    [WARNING]
    [WARNING] For this reason, future Maven versions might no longer support buildin
    g such malformed projects.
    [WARNING]
    [INFO]
    [INFO] ------------------------------------------------------------------------
    [INFO] Building Sample rest 1.0-SNAPSHOT
    [INFO] ------------------------------------------------------------------------
    [INFO]
    [INFO] >>> maven-jetty-plugin:6.1.10:run (default-cli) > test-compile @ restsamp
    le >>>
    [WARNING] The POM for unknown.binary:javax.ws.rs-api-2.0:jar:SNAPSHOT is missing
    , no dependency information available
    [INFO] ------------------------------------------------------------------------
    [INFO] BUILD FAILURE
    [INFO] ------------------------------------------------------------------------
    [INFO] Total time: 0.578 s
    [INFO] Finished at: 2014-09-23T16:40:06-04:00
    [INFO] Final Memory: 5M/15M
    [INFO] ------------------------------------------------------------------------
    [ERROR] Failed to execute goal on project restsample: Could not resolve dependen
    cies for project com.cestpasdur.samples:restsample:war:1.0-SNAPSHOT: Failed to c
    ollect dependencies at org.jboss.resteasy:resteasy-jaxrs:jar:1.0.2.GA -> org.sca
    nnotation:scannotation:jar:1.0.2: Failed to read artifact descriptor for org.sca
    nnotation:scannotation:jar:1.0.2: Could not transfer artifact org.scannotation:s
    cannotation:pom:1.0.2 from/to java.net (https://maven-repository.dev.java.net/no
    nav/repository): No connector available to access repository java.net (https://m
    aven-repository.dev.java.net/nonav/repository) of type legacy using the availabl
    e factories WagonRepositoryConnectorFactory -> [Help 1]
    [ERROR]
    [ERROR] To see the full stack trace of the errors, re-run Maven with the -e swit
    ch.
    [ERROR] Re-run Maven using the -X switch to enable full debug logging.
    [ERROR]
    [ERROR] For more information about the errors and possible solutions, please rea
    d the following articles:
    [ERROR] [Help 1] http://cwiki.apache.org/confluence/d...DependencyReso
    lutionException
    je me rend compte que le projet ne build pas a cause d'un plugin de test maven-surefire-plugin (j'ai)
    'build.plugins.plugin.version' for org.apache.maven.plugins:maven-surefire-plugin is missing. @ line 74, column 21
    Puis j'ai ajouté une version <version>2.17</version>

    Mais reste toujours des librairies non chargé !!!

    Merci de mettre a jours votre preuve de concepts

Discussions similaires

  1. web service CRUD restful +ejb
    Par angelica2010 dans le forum REST
    Réponses: 2
    Dernier message: 18/11/2010, 11h09
  2. Lancer un service (server TCP) avec JBoss
    Par krum dans le forum Wildfly/JBoss
    Réponses: 2
    Dernier message: 23/07/2009, 15h02
  3. [Article] Exposer un Service CRUD RestFul avec Jboss RestEasy
    Par dgouyette dans le forum Services Web
    Réponses: 4
    Dernier message: 25/05/2009, 09h26
  4. [Article] Exposer un Service CRUD RestFul avec Jboss RestEasy
    Par dgouyette dans le forum Services Web
    Réponses: 0
    Dernier message: 20/05/2009, 01h15
  5. [Article] Exposer un Service CRUD RestFul avec Jboss RestEasy
    Par dgouyette dans le forum Wildfly/JBoss
    Réponses: 0
    Dernier message: 20/05/2009, 01h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo