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

Spring Web Java Discussion :

Spring 2.0 + REST Services


Sujet :

Spring Web Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Spring 2.0 + REST Services
    Bonsoir,

    Je cherche à intégrer un service rest dans une application Spring 2.0 (je suis obligé d'utiliser Spring 2.0), mais après pas mal de temps de recherche sur le net, j'ai juste trouvé des exemples pour Spring 3.0 avec les annotations.

    Je m'explique : le rest service sert à la génération d'un fichier txt.
    Ainsi, l'utilisateur doit cliquer sur un lien à l'écran pour télécharger le fichier.

    Mais, là où je bloque, c'est comment intégrer le rest service dans le controller ?

    Ce que j'ai compris de Rest, c'est : on doit indiquer le path avec une annotation @Path au dessus de la classe.
    Puis, comment on envoie les données : @GET @Produces(MediaType.TEXT_XML) @Path("contacts")
    Tout ça à mettre au dessus d'une méthode (si l'on veut bien entendu récupérer en GET du XML avec le path donné)

    Ensuite, dans la classe qui récupère les données, on utilise une variable de type WebResource que l'on construit avec une url correspondant au Path du service Rest et avec d'autres manip, on récupère les données.

    Donc, ça j'ai compris, mais comment ça s'intègre à Spring 2.0 ?
    La classe récupérant les données contient un main, comment faire pour qu'elle se lance automatiquement quand l'utilisateur clique sur le lien à l'écran correspondant au service rest ?

    Bref, ce n'est pas très clair pour moi tout ça.

    Pouvez-vous éclairer un peu ma lanterne svp ?

    Cordialement,
    Zysce.

  2. #2
    Membre averti Avatar de samy2525
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    259
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Janvier 2008
    Messages : 259
    Points : 310
    Points
    310
    Par défaut
    Bonjour,

    J'ai l'impression que ton application est de type bureautique, si c'est le cas c'est un peu difficile d'intégrer un service REST,

    Le service REST comme je l'utilise s'utilise très bien avec des requêtes AJAX, et son but généralement et de ne pas recharger toute la page, mais juste une partie de ton IHM.

    Si tu peux nous donner encore plus d'explications.

    Bon courage

    Samy
    http://www.m-ataf.com (En cours de construction)

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bonjour,
    Merci pour ta réponse.

    En fait, mon application est un site e-commerce à faire dans le cadre d'un projet de cours.
    Et justement, après avoir validé une commande, l'utilisateur doit avoir la possibilité de télécharger le ticket de la commande.
    La génération du ticket doit se fait en service rest.

    Mais, j'ai encore cherché et voilà ce que j'ai trouvé, corrigez moi si j'ai faux :

    le code du serveur Rest :

    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
     
    package rest ;
     
    /* les imports ...*/
     
    @Path("/order")
    public class RestServer 
    {
        @POST
        @Consumes(MediaType.APPLICATION_JSON)
        @Produces(MediaType.TEXT_PLAIN)
        public String makeOrder(String jsonStr) 
        {
        	/* le code de la méthode*/
        }	
    }
    Dans le fichier web.xml, la déclaration de la servlet Rest :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    <servlet>
        	<servlet-name>Jersey REST Service</servlet-name>
        	<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
        	<init-param>
                   <param-name>com.sun.jersey.config.property.packages</param-name>
                   <param-value>rest.RestServer</param-value>
            </init-param>
            <load-on-startup>0</load-on-startup>
        </servlet>
    	<servlet-mapping>
    		<servlet-name>Jersey REST Service</servlet-name>
            <url-pattern>/rest/*</url-pattern>
        </servlet-mapping>
    Et dans le controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
     private String getTicketFile(JSONObject jsonOrder) 
    {
             ClientConfig config = new DefaultClientConfig();
             Client client = Client.create(config);
     
              WebResource service = client.resource(UriBuilder.fromUri("http://localhost:8080/SpringECommerce/").build());
             ClientResponse resp = service.path("rest").path("makeOrder")
                             .type(MediaType.APPLICATION_JSON).accept(MediaType.TEXT_PLAIN)
                             .post(ClientResponse.class, jsonOrder.toString());
     
             return resp.getEntity(String.class);
    }
    Est ce que je me trompe quelque part (juste pour préciser, le prof a demandé sans persistence en bd, donc tout se fait avec des factory d'où le fait que la méthode Rest renvoie quelque chose) ?

    En effet, j'ai cette erreur quand je relance mon serveur (Apache Tomcat 7.0) :
    com.sun.jersey.api.container.ContainerException: The ResourceConfig instance does not contain any root resource classes.

    Y a t-il une erreur quelque part ? '^^

  4. #4
    Membre averti
    Homme Profil pro
    Java
    Inscrit en
    Mai 2011
    Messages
    170
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2011
    Messages : 170
    Points : 444
    Points
    444
    Par défaut
    L'erreur indique qu'il ne peut trouver de classe qui peut être exécuter comme web service restful.

    Regarde ici :

    http://www.mkyong.com/webservices/ja...ource-classes/

    http://stackoverflow.com/questions/4...source-classes

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    J'ai trouvé mon erreur '^^

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <init-param>
            <param-name>com.sun.jersey.config.property.packages</param-name>
            <param-value>rest</param-value>
    </init-param>
    La valeur de com.sun.jersey.config.property.packages doit être un nom de package contenant les classes Rest (j'ai mis la classe...)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. WCF Rest Service - Sécurisation par Client et/ou Service Certificats
    Par DanZzz dans le forum Windows Communication Foundation
    Réponses: 0
    Dernier message: 20/11/2013, 21h46
  2. REST Service avec Razor
    Par sleeg dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/06/2013, 00h12
  3. Comment passer une date dans WCF Rest Service
    Par aymen8219 dans le forum Services Web
    Réponses: 1
    Dernier message: 30/04/2013, 20h57
  4. Problème d'encodage fichier JSON avec WCF REST Service
    Par Spikuria dans le forum Services Web
    Réponses: 0
    Dernier message: 09/03/2012, 10h24
  5. WCF REST Service Template
    Par micka132 dans le forum Windows Communication Foundation
    Réponses: 5
    Dernier message: 23/04/2010, 22h48

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