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

Servlets/JSP Java Discussion :

Communication entre serveurs


Sujet :

Servlets/JSP Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    Points : 20
    Points
    20
    Par défaut Communication entre serveurs
    Bonjour,

    Je souhaiterai communiquer des données entre deux serveurs grâce à ma servlet.
    J'explique mon application :
    J'ai une page de login, je fais une vérification, ensuite je voudrai envoyer une string qui ne peut être contenu dans l'url pour raison de sécurité et aussi parce que cela n'est pas faisable car elle est trop grande!

    Le request.getRequestDispatcher("...").forward(req,rep); ou request.getRequestDispatcher("...").include(req,rep); ne fonctionne pas puisque je ne suis pas sur le même serveur.

    Je suis donc obliger d'utiliser le response.sendRedirect("..."); mais je n'arrive pas à récupérer de données de l'autre côté.
    J'ai essayé en passant ma string dans request.setAttribute(), response.addHeader(), mais rien ne fait je n'y arrive pas.

    Quelqu'un aurait la solution?

  2. #2
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Ton problème ne m'a pas l'air simple...

    La seule solution que je vois est d'établir, dans le code de la première servlet, une connexion HTTP à la deuxième servlet.
    Une fois cette connexion établie, il te suffit de construire et d'envoyer une requête HTTP de type POST (avec la méthode POST, tes paramètres sont placés dans le body de la requête HTTP et non dans l'URL) contenant les données que tu désires envoyer à ta deuxième servlet.
    Lorsque ta deuxième servlet recevra cette requête, elle exécutera sa méthode doPost() exactement comme si elle avait été contactée via un formulaire HTML.
    Dans ta première servlet, tu peux alors choisir d'utiliser ou non ce qui t'est retourné par ta deuxième servlet.

    Pour faire cela, tu peux utiliser la classe HttpURLConnection (il existe plein de petits tuto sur la façon d'utiliser cette classe).
    En gros, tu dois faire quelque chose comme ça:
    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
    //prépare le corps de ta requête HTTP en y plaçant tes paramètres
    String body = "tonParametre1=...&tonParametre2=...&...";
     
    //ouvre une connexion HTTP vers ta deuxième servlet
    URL url = new URL("<l'URL de ta deuxième servlet>");
    HttpURLConnection connection = (HttpURLConnection)url.openConnection();
     
    //configure cette connexion
    connection.setRequestProperty("Content-Length", body.length());  
    connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 
    connection.setRequestMethod("POST");
    connection.setDoOutput(true);  
    connection.setDoInput(true);
     
    //envoie ta requête HTTP
    OutputStream out = connection.getOutputStream();  
    out.write(body.getBytes());
    out.close();
     
    //récupère la réponse de ta deuxième servlet
    BufferedReader responseReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
    String response 	= "";
    String currentLine 	= "";
    while((currentLine = responseReader.readLine()) != null)
    	response += currentLine + "\n";
    responseReader.close();
     
    //ferme la connexion HTTP
    connection.disconnect();
     
    //affiche la réponse de ta deuxième servlet
    System.out.println(response);
    Voilà, j'espère que ça t'aidera...

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Alors merci de ton aide, mais ce n'est pas exactement ce que je voudrais faire.
    Si j'ai bien compris ta méthode, c'est ma servlet 1 qui va donner la réponse au client?
    Moi ce que je voudrais c'est passer la main au serveur de la servlet 2 et donc que la servlet 2 réponde directement au client.
    Pour l'instant j'utilise un formulaire que j'auto-submit en javascript mais j'aimerai faire sans cette étape...

  4. #4
    Membre averti Avatar de aJavaDeveloper
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 248
    Points : 300
    Points
    300
    Par défaut
    Pourquoi ne pas simplement faire en sorte que ta première servlet retourne la réponse qu'elle a elle-même reçue de ta deuxième servlet ?
    Pour cela, il te suffit d'écrire le code suivant dans ta première servlet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    httpResponse.getWriter().print(response); //httpResponse étant le deuxième paramètre de la méthode doPost() (ou doGet()) de ta servlet
    return null;
    Les utilisateurs n'y verront que du feu...

Discussions similaires

  1. Communication entre serveurs (Win -> Linux)
    Par Frogserv dans le forum Réseau
    Réponses: 0
    Dernier message: 03/08/2011, 22h37
  2. [SP-2007] Gestion des blob externes et communication entre serveurs
    Par gobelet dans le forum SharePoint
    Réponses: 2
    Dernier message: 14/04/2011, 10h08
  3. Communication entre serveur web et prog VB
    Par christgh dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 29/04/2008, 14h36
  4. communication entre serveurs
    Par sandouch dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 21/10/2007, 15h20

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