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

Services Web Java Discussion :

[REST Jersey] Question sur les WebServices


Sujet :

Services Web Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut [REST Jersey] Question sur les WebServices
    Bonjour,

    J'ai une question concernant les web services. Quand un client A envoie une requête au web Services que se passe-t-il si un autre client B envoie une requête alors que la requête du client A n'est pas terminé ?

    Le client B doit attendre que le client A est terminé sa requête ?


    Si oui, il y a-t-il un moyen de traiter simultanément les deux requêtes ?


    Merci d'avance pour votre aide !

    CooLMaN.

  2. #2
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Je ne sais pas quel serveur tu utilises, mais oui, le serveur va traiter plusieurs requetes en simultané. Heureusement d'ailleurs !!!!

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Points : 2
    Points
    2
    Par défaut
    J'utilise un web services de type REST grâce à Jersey. Mon serveur d'application est Glassfish.

    J'ai crée deux programme pour tester mon web services. Les deux programmes (qu'on appelera p1 et p2) envoient 10 requêtes vers mon web services.

    Voilà ce que je fais :

    1 - je démarre mon web Services

    2 - je démarre p1

    3 - je démarre p2

    ce qui se passe : p2 reçoit bien 10 réponses du web serveurs par contre p1 se bloque dès que je lance p2. p1 ne reçoit plus de requête.

    Voici mon code pour le web services :



    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
     
    @GET
      @Path("/infos")
      @Consumes("text/html;charset=UTF-8") 
      @Produces(MediaType.APPLICATION_JSON)
      public String getInfos(@QueryParam("pseudo") @Encoded String pseudo) {
     
     
     
            BufferedReader in;
            PrintWriter out; 
     
     
     
               System.out.println(pseudo);
             try {
     
     
     
                   Socket socketduserveur ;
     
     
                socketduserveur = new Socket(InetAddress.getLocalHost(),2009); 
     
                      out = new PrintWriter(socketduserveur.getOutputStream());
                      in = new BufferedReader (new InputStreamReader (socketduserveur.getInputStream(), "UTF-8"));
                    System.out.println("Demande de connexion");
                    System.out.println(pseudo);
                     String prout = pseudo;
     
                    System.out.println(prout);
                    System.out.println(URLDecoder.decode(prout, "UTF-8"));
                    out.println(prout);
                    out.flush();
     
     
                    System.out.println(counter);
              counter++;
     
     
     
                    json = "";
     
                    json = json + in.readLine();
     
     
     
                  socketduserveur.close();
     
     
            }catch (UnknownHostException e) {
     
                e.printStackTrace();
            }catch (IOException e) {
     
                e.printStackTrace();
            }
        return json;
    }

  4. #4
    Membre actif Avatar de fahdijbeli
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2012
    Messages
    281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Juin 2012
    Messages : 281
    Points : 240
    Points
    240
    Par défaut
    bonsoir
    Bon j'ai pas tombé à un cas comme ça mais à mon avis il faut utiliser le mot clé dans la méthode getInfos:
    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
    51
    52
    53
    54
    55
    56
    57
    58
    @GET
      @Path("/infos")
      @Consumes("text/html;charset=UTF-8") 
      @Produces(MediaType.APPLICATION_JSON)
      public synchronized String getInfos(@QueryParam("pseudo") @Encoded String pseudo) {
     
     
     
            BufferedReader in;
            PrintWriter out; 
     
     
     
               System.out.println(pseudo);
             try {
     
     
     
                   Socket socketduserveur ;
     
     
                socketduserveur = new Socket(InetAddress.getLocalHost(),2009); 
     
                      out = new PrintWriter(socketduserveur.getOutputStream());
                      in = new BufferedReader (new InputStreamReader (socketduserveur.getInputStream(), "UTF-8"));
                    System.out.println("Demande de connexion");
                    System.out.println(pseudo);
                     String prout = pseudo;
     
                    System.out.println(prout);
                    System.out.println(URLDecoder.decode(prout, "UTF-8"));
                    out.println(prout);
                    out.flush();
     
     
                    System.out.println(counter);
              counter++;
     
     
     
                    json = "";
     
                    json = json + in.readLine();
     
     
     
                  socketduserveur.close();
     
     
            }catch (UnknownHostException e) {
     
                e.printStackTrace();
            }catch (IOException e) {
     
                e.printStackTrace();
            }
        return json;
    }
    juste pour synchroniseuse les deux programmes .

  5. #5
    Expert confirmé
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 274
    Points : 4 141
    Points
    4 141
    Par défaut
    Ca vient surement de la façon dont du lances tes deux programmes p1 et p2.

    @fahdijbeli
    Je ne pense pas que synchronized règle son problème.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Je ne suis pas sur de comprendre ton code. Pourquoi crées-tu une socket serveur dans ta méthode getInfos() ? Les sockets sont gérer par GlassFish.
    J'ajouterai qu'il peut être dangereux d'utiliser des Sockets (ainsi que des Thread et des synchronized) dans une application JEE. Toutes ces problématiques sont gérées par le serveur d’application.

    Dans ton exemple tu essayes, de ce que je comprend, de créer une deuxième connexion parallèle à celle gérer par GlassFish. Ça peut poser des problèmes.

    Je ne sais pas pourquoi ça marche avec un seul client mais ce n'est définitivement pas la bonne démarche à suivre.

Discussions similaires

  1. Question sur les webservices
    Par mister3957 dans le forum Général Conception Web
    Réponses: 0
    Dernier message: 27/07/2012, 16h36
  2. Petites question sur les WebServices (appel et classe envoyée)
    Par Arsenic68 dans le forum Services Web
    Réponses: 0
    Dernier message: 24/12/2009, 14h54
  3. Question sur les WebService renvoyant un DataSet ?
    Par tazmania dans le forum Services Web
    Réponses: 16
    Dernier message: 07/06/2008, 20h29
  4. Question sur les webservices
    Par dedicare dans le forum Services Web
    Réponses: 0
    Dernier message: 20/04/2008, 18h13
  5. Question sur les Webservices
    Par boudhala dans le forum Services Web
    Réponses: 6
    Dernier message: 02/11/2007, 10h09

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