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

Tomcat et TomEE Java Discussion :

[Tomcat 6 / Apache Solr] Ecouter communication entre client et Tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut [Tomcat 6 / Apache Solr] Ecouter communication entre client et Tomcat
    je ne sais pas trop où poster ca

    je teste actuellement l'intégration drupal7 <-> Apache Solr.

    je ne suis pas très fan de tomcat, mais bon force est de constater que Solr marche vraiment très bien. Tout c'est passé les doigts dans le nez sans trop d'effort pour installer/parametrer pour l'instant.

    Si le truc est validé, on va basculer une appli Saas en prod vers ce mix drupal <-> solr.
    Et pour valider, j'ai justement besoin d'un script de validation. je voudrais scripter environ 50 recherches dont je connais le résultat.

    Pour scripter ca, je pourrais monter un script selenium mais je n'ai pas encore trouvé comment faire apparaitre dans drupal le nombre total de réponses. Alors pour me simplifier la vie, je préfèrerais y aller avec un script quick&dirty qui interroge solr directement, parser du xml en ruby devrait se faire assez rapidement.

    Par contre, je rencontre un truc idiot

    * ca marche dans l'applicatif (qd je recherche 'toto' dans drupal, j'ai bien les deux bons résultats qui apparaissent)
    * par contre qd je demande 'toto' à solr directement, j'obtiens zero resultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    root:~# curl http://localhost:8080/solr/select/?q=toto
    <?xml version="1.0" encoding="UTF-8"?>
    <response>
    <result name="response" numFound="0" start="0"/><lst name="highlighting"/>
    </response>
    root:~#
    ==> aucun résultat

    je dois mal formuler ma requete solr (le nom de la zone/core/base solr où effectuer la recherche serait-il manquant?)

    je pensais espionner la forme des requetes passées par drupal vers solr pour m'en inspirer pour ce script. d'après le code du module solr de drupal il s'agit bien de type de requete/url comme ci dessus. donc je voulais les regarder avec tcpdump :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    root:~# tcpdump -i lo -s 9999 -X
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on lo, link-type EN10MB (Ethernet), capture size 9999 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel
    root:~#
    ==> rien du tout ne s'affiche lorsque je fais les recherches via l'interface web. par contre, lorsque je fais une recherche à la ligne de commande, là tcpdump m'affiche bien les paquets comment attendu.
    c'est bizzare parce que drupal est configuré pour accéder solr va http://localhost:8080/solr

    j'ai tenté de tout écouter sur eth0 sauf port 22 (ssh) et 80 (web). je n'ai rien trouvé de parlant sauf peut-etre
    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
     
            0x0000:  4500 0217 0000 4000 4011 0362 b220 6738  E.....@.@..b..g8
            0x0010:  b220 69fb 8c06 182f 0203 3789 7274 6d20  ..i..../..7.rtm.
            0x0020:  6d49 4e46 4f5f 4d45 4d5f 746f 705f 6d65  mINFO_MEM_top_me
            0x0030:  6d5f 3031 5f6e 616d 657c 2f75 7372 2f6c  m_01_name|/usr/l
            0x0040:  6962 2f6a 766d 2f6a 6176 612d 362d 6f70  ib/jvm/java-6-op
            0x0050:  656e 6a64 6b2f 6269 6e2f 6a61 7661 202d  enjdk/bin/java.-
            0x0060:  446a 6176 612e 7574 696c 2e6c 6f67 6769  Djava.util.loggi
            0x0070:  6e67 2e63 6f6e 6669 672e 6669 6c65 3d2f  ng.config.file=/
            0x0080:  7661 722f 6c69 622f 746f 6d63 6174 362f  var/lib/tomcat6/
            0x0090:  636f 6e66 2f6c 6f67 6769 6e67 2e70 726f  conf/logging.pro
            0x00a0:  7065 7274 6965 7320 2d44 6a61 7661 2e61  perties.-Djava.a
            0x00b0:  7774 2e68 6561 646c 6573 733d 7472 7565  wt.headless=true
            0x00c0:  202d 586d 7831 3238 4d20 2d58 583a 2b55  .-Xmx128M.-XX:+U
            0x00d0:  7365 436f 6e63 4d61 726b 5377 6565 7047  seConcMarkSweepG
            0x00e0:  4320 2d44 6a61 7661 2e75 7469 6c2e 6c6f  C.-Djava.util.lo
            0x00f0:  6767 696e 672e 6d61 6e61 6765 723d 6f72  gging.manager=or
            0x0100:  672e 6170 6163 6865 2e6a 756c 692e 436c  g.apache.juli.Cl
            0x0110:  6173 734c 6f61 6465 724c 6f67 4d61 6e61  assLoaderLogMana
            0x0120:  6765 7220 2d44 6a61 7661 2e65 6e64 6f72  ger.-Djava.endor
            0x0130:  7365 642e 6469 7273 3d2f 7573 722f 7368  sed.dirs=/usr/sh
            0x0140:  6172 652f 746f 6d63 6174 362f 656e 646f  are/tomcat6/endo
            0x0150:  7273 6564 202d 636c 6173 7370 6174 6820  rsed.-classpath.
            0x0160:  2f75 7372 2f73 6861 7265 2f74 6f6d 6361  /usr/share/tomca
            0x0170:  7436 2f62 696e 2f62 6f6f 7473 7472 6170  t6/bin/bootstrap
            0x0180:  2e6a 6172 202d 4463 6174 616c 696e 612e  .jar.-Dcatalina.
            0x0190:  6261 7365 3d2f 7661 722f 6c69 622f 746f  base=/var/lib/to
            0x01a0:  6d63 6174 3620 2d44 6361 7461 6c69 6e61  mcat6.-Dcatalina
            0x01b0:  2e68 6f6d 653d 2f75 7372 2f73 6861 7265  .home=/usr/share
            0x01c0:  2f74 6f6d 6361 7436 202d 446a 6176 612e  /tomcat6.-Djava.
            0x01d0:  696f 2e74 6d70 6469 723d 2f74 6d70 2f74  io.tmpdir=/tmp/t
            0x01e0:  6f6d 6361 7436 2d74 6d70 206f 7267 2e61  omcat6-tmp.org.a
            0x01f0:  7061 6368 652e 6361 7461 6c69 6e61 2e73  pache.catalina.s
            0x0200:  7461 7274 7570 2e42 6f6f 7473 7472 6170  tartup.Bootstrap
            0x0210:  2073 7461 7274 0a                        .start.

    à noter aussi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    root:~# lsof | grep -i tomcat
    [...]
    java        931  tomcat6   82u     IPv6       5046      0t0        TCP localhost.localdomain:8005 (LISTEN)
    [...]
    java        931  tomcat6   31u     IPv6       4894      0t0        TCP *:http-alt (LISTEN)
    (pas vu qqch qui ressemble à une sorte de socket fichier (j'ai peut-etre mal regardé... la liste est très longue)
    j'ai regardé la FAQ DVP sur tomcat mais j'ai rien vu d'utile pour moi.

    donc question pour les experts réseau et les experts de tomcat ici : comment je fais pour espionner les communications entre un client arbitraire d'une appli tomcat et le server tomcat, les deux sur localhost, sachant que tcpdump ne semble rien afficher ?

    une idée ?

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Si t'as une interface graphique sur la machine où tourne drupal, utilise wireshark. Sinon tcpdump sur toutes les interfaces.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tcpdump -i 'any' 'tcp port 8080'
    Autre possibilité moins invasive: configurer une valve ou, si tomcat plus recent, un filtre qui dump les requetes:

    http://tomcat.apache.org/tomcat-7.0-..._Dumper_Filter

  3. #3
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    marche pas. zero paquet capturé. et non je n'ai pas d'ihm graphique et je n'ai pas l'intention de l'installer + installer les éléments pour déporter l'affichage juste pour voir l'ihm de wireshark (meme si c'est vrai que je le préfère à tcpdump)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    root:~# tcpdump -i 'any' 'tcp port 8080'
    tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
    listening on any, link-type LINUX_SLL (Linux cooked), capture size 96 bytes
    ^C
    0 packets captured
    0 packets received by filter
    0 packets dropped by kernel

    (merci au passage, je connaissais pas le -i 'any' pour capturer toutes les interfaces)

    pourtant le meme server m'affiche bien des recherches réussies dans la page web (là par contre je vois bien les pages de drupal servies au tcpdump)

    et oui je passe la requete tcpdump sur le bon server hein
    de toute facon à ce stade, c'est un seul server de test qui me hoste tout (apache/mysql pour drupal, tomcat6/solr pour la recherche)

    peut-on déduire de cette absence de paquet capturé que la communication drupal <-> solr ne se passe pas par la carte réseau ? (en tout cas pas tcp localhost 8080, alors que c'est ce que j'ai paramétré dans drupal et drupal se plaint d'un solr unreachable qd j'arrete tomcat...)
    UDP peut-etre ? un socket fichier qqpart ? et si oui comment l'espionner ?

    merci

    ps. je veux bien regarder la doc de tomcat pour dumper des requetes. mais bon... l'objet de ce test est de valider que la plateforme convient. pas d'offense mais je suis pas un grand fan de java / tomcat / j2ee, j'avoue que ca me séduit peu. donc bon, ok pour potasser la doc, mais plutot lorsque j'aurais validé qu'on retient finalement solr. et pas avant (enfin si possible...).

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

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

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Ben tu retire le tcp port et tu check à la main tout ce qui passe.

    Si rien ne passe c'est que drupal n'envoie rien solr (utilisation d'un cache interne à drupal?)

  5. #5
    Membre habitué

    Inscrit en
    Février 2004
    Messages
    342
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 342
    Points : 197
    Points
    197
    Par défaut
    ca y est ! une bonne nuit de sommeil et tout s'éclaire

    en fait, lorsque tu éteints tomcat, l'interface d'admin drupal te met un message d'erreur (http://localhost:8080/solr inaccessible), mais la recherche continue à fonctionner coté utilisateur final !

    en pratique, drupal a bien solr de configuré et d'operationnel. il est bien utilisé par son module Apache Solr autocomplete (ca par contre, si tu ne cliques pas sur OK pour lancer une recherche, ajax te lance l'autocomplete, et là tu vois les trames solr passer au tcpdump)

    par contre,
    en fait, enterré dans les parametres de recherches de drupal, il faut indiquer quel moteur de recherche est utilisé par défaut : et c'est celui de drupal qui y est au lieu de solr (genre tu installes et tu configures le module solr pour le plaisir de cocher des cases...)

    une fois qu'on met solr comme moteur par défaut... ohhhh magie, tcpdump attrape bien les paquets !

    bref, comme d'habitude un probleme qui se situe entre le clavier et la chaise !

    ==> résolu

    ps: merci pour le switch -i 'any' au passage

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

Discussions similaires

  1. Communication entre client html5 et les servlets
    Par mohamedsghaier dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 08/03/2013, 14h28
  2. [WS 2003] Pbm de communication entre clients et serveur sur les ranges IP differents
    Par CodeurNé dans le forum Windows Serveur
    Réponses: 0
    Dernier message: 12/07/2011, 11h45
  3. Communication entre 2 projet Tomcat
    Par nzo70 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 30/12/2008, 10h47
  4. problème de communication entre apache et tomcat en https
    Par Kursha dans le forum Tomcat et TomEE
    Réponses: 2
    Dernier message: 16/11/2007, 14h11
  5. [Java] Communication entre client et serveur
    Par danje dans le forum CORBA
    Réponses: 1
    Dernier message: 14/12/2004, 18h08

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