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 Servlets distantes


Sujet :

Servlets/JSP Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 80
    Points : 53
    Points
    53
    Par défaut Communication entre Servlets distantes
    Bonjour à tous,

    Voici mon problème :
    J'ai 2 serveurs distants executants une servlet chacun. Je souhaite que la servlet 1 fasse un appel à la servlet 2, récupère son résultat, et retourne ce résultat en réponse.
    Je suis débutant en ce qui concerne la programmation des servlets, donc à priori je ne vois pas d'autres solutions à part utiliser une connexion TCP java. Je pense qu'il doit exister une solution simple et propre pour interconnecter les composants distants. Avez vous des solutions ?

    Merci pour votre aide,

    Nicolas

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 548
    Points : 635
    Points
    635
    Par défaut
    Tu peux faire une simple page html avec un forward non ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Oui, mais je souhaite pouvoir répondre autre chose que du HTML, du XML par exemple.

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 524
    Points
    524
    Par défaut
    Bonjour,
    est-ce que c'est des servlets au sein de la même webapp, et pourquoi est-ce que tu a besoin qu'elle s'appellent?

    Si la 1ere servlet est juste un point d'entrée pour rediriger vers les autres: un forward suffit, et la 2ème servlet peut très bien générer du XML sans soucis.
    si tu as besoin de données d'une servlet à l'autre, tu peux ajouter des attributs dans la portée "request", comme on le fait dans la session.

    Mais pour cela, il faut que les 2 servlets soient dans la même application, d'ou mes premières questions.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Les 2 servlets sont situés sur 2 serveurs différents, donc ne sont pas situés sur la même webapp.
    Les 2 serveurs doivent pouvoir s'échanger des informations, dans les 2 sens. En fait tout ceci est indépendant de la couche présentation (c'est pour cela qu'un forward n'est pas la solution)

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 524
    Points
    524
    Par défaut
    Dans ce cas les WebService sont la solution.
    Je ne suis pas trop spécialiste du sujet:j'avais utilisé un peu le xml-rpc, mais aujour'dhui ce serais plus Soap
    J'ai aussi vu des solutions had-oc basée sur un HttpClient d'apache, et un parsing manuel, mais je trouve ça moyen (bug de parsing pbm de paramétrage etc.)

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Ok, Merci. Je pensais utilisé les webservices éventuellement, mais je pensais qu'il existait une solution plus légère via les servlets.

    Sinon j'ai essayé ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    String includeIn ="http://10.22.4.124:8080/lps-4.0.2/my-apps/streaming/testSessionAgent.lzx";
    req.setAttribute("lzt", "agentmessage");
    req.setAttribute("url", "http://localhost:8084/AgentJabber/AgentServlet");
    req.setAttribute("to", "*");
    req.setAttribute("dset", "messages");
     req.setAttribute("msg", "<url-encoded>Hello</url-encoded>");
    req.getRequestDispatcher(includeIn).include(req, res);
    Je pensais que ceci fonctionnerait, mais apparement l'inclusion de réponse n'est possible que pour des servlets fonctionnant sur le même serveur

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    Après reflexion, non l'utilisation de webservices n'est pas possible. En fait, ma servlet A doit appeler mon autre servlet B pour lui passer un message via un url du type : http://10.22.4.124:8080/lps-4.0.2/my...s&msg=Helloyou

    Je ne peut pas changer la méthode d'appel à la servlet B.
    Il est donc nécessaire à la servlet A d'appeler la servlet B de cette manière.

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    376
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 376
    Points : 431
    Points
    431
    Par défaut
    Je ne vois pas trop où est le problème. Ta servlet B peut très bien retourner du XML ou ce que tu veux dans la réponse.

    J'avais eu le même besoin, je forwardais donc, dans ma servlet B, vers une JSP qui écrivait du XML au lieu de HTML (mais tu peux faire la même chose uniquement dans ta servlet, en utilisant des technos comme JAXB par exemple pour générer ce XML). Il te suffit ensuite, dans ta servlet A, de récupérer le texte de ton URL, via un url.openStream() par exemple, et de le traiter comme du XML.

    Ca t'irait comme solution, ou j'ai manqué quelque chose ?

  10. #10
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 524
    Points
    524
    Par défaut
    (parenthèse sans importance: Une servlet peut être un WebService, c'est un peu ce que fait ta servlet, même si ce n'est pas du WSDL, fin de la parenthèse)

    Comme il a été dit, avec URL.openConnection() tu peux ouvrir un flux distant (comme le ferai un browser)


    La classe HttpClient fouirnit dans les librairies de jakarta-commonsfait la même chose avec plus de posibilités:
    http://commons.apache.org/httpclient/apidocs/index.html

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 80
    Points : 53
    Points
    53
    Par défaut
    OK, problème résolu.
    J'utilise UrlConnection pour faire l'appel au deuxième serveur.

    Merci à tous pour votre aide

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

Discussions similaires

  1. Communication entre servlet, contextes différents
    Par Robbin Hoodz dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 07/09/2010, 14h09
  2. Communications entre Servlet et JSP
    Par GérardMartinelli dans le forum Servlets/JSP
    Réponses: 9
    Dernier message: 06/06/2010, 16h55
  3. Communication entre servlets via Post Request
    Par fafoula dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 10/12/2007, 10h34
  4. communication entre servlet
    Par aboubrams dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 10/11/2006, 14h30
  5. Communication entre servlets
    Par kam81 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 23/10/2006, 08h44

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