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

Apache Discussion :

[tomcat] mod_jk post form multipart/post data


Sujet :

Apache

  1. #1
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Points : 97
    Points
    97
    Par défaut [tomcat] mod_jk post form multipart/post data
    Bonjour et merci par avance,

    J'ai un gros problème concernant la communication entre un serveur Apache (2.2.8) et tomcat (6).
    J'utilise pour cela le mod_jk (1.2.30).
    J'ai l'impression d'être sur un bug d'Apache (mais j'ai du mal a y croire).

    Dans mon application, lorsque j'ai un "gros" formulaire de type 'multipart/post data', de façon aléatoire je perds des données.
    En effet lorsque j'effectue un submit du formulaire, il y a un champ (toujours le meme) qui se vide, mais c'est pas systématique !.

    J'ai activer les logs du mod_jk dans apache, et j'en ai conclu que mes données du formulaire sont envoyé par packet de taille 8192 bytes, et que la donnée qui est perdue est celle qui se trouve a la fin du 1er packet.
    Voici une trace

    Quand ça se passe mal.
    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
    ------7da28a1a20
    82a..Content-Dis
    position:.form-d
    ata;.name="utili
    sationRegroupeme
    nt[1]"....46.0..
    ----------------
     
    [autre packet]
     
    .4....----------
    ---7da28a1a2082a
    ..Content-Dispos
    ition:.form-data
    ;.name="etatRegr
    oupement[1]"....
    ça ne saute pas aux yeux mais la valeur du champ utilisationRegroupement[1] devrait être 46.0,
    Mais il semblerait qu'il y a une erreur sur le parse, et du coup je récupère une valeur null dans tomcat.

    J'ai essayer avec firefox j'ai le même probleme.
    J'ai essayer sans apache (directement tomcat) et ça marche.
    J'ai essayer avec le mod_proxy (au lieu de mod_jk) et ça marche.
    J'ai aussi essayer en enlevant le enctype, et les input type='file' de mon formulaire et ça marche.

    J'ai essayer d'agrandir la taille des packet, mais les paramètres que j'ai essayé ne semble pas agir.

    Qu'en pensez vous ?

    Merci d'avance

  2. #2
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Il semblerait qu'il existât à une époque une taille limite de 8 Ko (8192) pour les paquets gérés par mo_jk mais que ce n'est plus le cas... Je ne sais pas si c'est vrai. Mais quoi qu'il en soit, vu que le problème ne se pose plus avec mod_proxy à la place de mod_jk, pourquoi ne pas utiliser définitivement mod_proxy ?

  3. #3
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    Merci beaucoup pour ton aide.

    En effet je pourrais utiliser le mod_proxy mais j'ai cru lire qu'il était moins performant. J'ai vu aussi qu'il existe le mode mod_proxy_ajp qui semble pas mal aussi.

    J'ai trouvé sur le wiki tomcat un résumé des différents mode. Il conseil bien d'utiliser le mode mod_jk. C'est pour ça que je voulais un peu insister pour trouver une solution.

    En tout cas pour le moment on a contourner le problème en enlevant l'input type="file" du formulaire (il n'est donc plus enctype='mutlipart/form data'), dans cette écran il ne servait pas a grand chose.
    Mais si ça se reproduit (et ça va se reproduire) sur un autre écran il faudra changer le mode de communication.

  4. #4
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    A part poster un message sur un forum Tomcat/mod_jk sur le site apache.org, je n'ai pas d'idée

  5. #5
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Points : 97
    Points
    97
    Par défaut
    Du coup j'ai posté un message dans le bugzilla de tomcat.

    Si j'ai des nouvelles je posterai dans le forum.

    Merci pour ton aide.

  6. #6
    Membre régulier
    Inscrit en
    Août 2004
    Messages
    171
    Détails du profil
    Informations forums :
    Inscription : Août 2004
    Messages : 171
    Points : 97
    Points
    97
    Par défaut Testcase !
    Le problème vient de se reproduire. Mais cette fois-ci j'ai pu extraire un testcase très simple. C'est une jsp avec un formulaire de type enctype="multipart/form-data" et 300 inputs text.
    Lorsque l'on le submit plusieurs fois de suite, parfois j'ai un champs qui est perdu !

    Voici ma configuration (simplifié aussi) de mon apache
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    LoadModule proxy_module modules/mod_proxy.so
     
    JkWorkerProperty worker.list=myappli
    JkWorkerProperty worker.myappli.type=ajp13
    JkWorkerProperty worker.myappli.host=localhost
    JkWorkerProperty worker.myappli.port=8009
    JkMount /myappli/* myappli


    => Je fournis en piece jointe la jsp ainsi que la lib common-fileupload.jar

    Aussi j'ai pu retester avec le mod_proxy et là pas de problème..
    Fichiers attachés Fichiers attachés

  7. #7
    Rédacteur
    Avatar de _Mac_
    Profil pro
    Inscrit en
    Août 2005
    Messages
    9 601
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 9 601
    Points : 12 977
    Points
    12 977
    Par défaut
    Honnêtement, je ne vois pas ce qu'on peut faire d'autre que d'essayer mod_proxy_ajp. Tu peux au moins essayer ce module, il peut fonctionner. Le wiki que tu donnes n'est pas aussi affirmatif que ça, je trouve. Il dit ceci :
    [mod_jk] is still under active development and also works for the apache 2.X series for cases where you do not want to use mod_proxy_ajp.
    J'en conclus que mod_proxy_ajp est une réelle alternative à mod_jk.

  8. #8
    Membre du Club
    Inscrit en
    Novembre 2005
    Messages
    132
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 132
    Points : 68
    Points
    68
    Par défaut
    J'ai le même problème

Discussions similaires

  1. [AJAX] Utiliser $post() pour multipart/form-data
    Par ric009 dans le forum jQuery
    Réponses: 3
    Dernier message: 01/04/2014, 01h04
  2. Soucis avec un POST enctype="multipart/form-data"
    Par Goupo dans le forum Langage
    Réponses: 2
    Dernier message: 17/04/2009, 17h21
  3. Passer une URL dans un form avec POST
    Par dldstyle dans le forum Langage
    Réponses: 5
    Dernier message: 30/04/2006, 20h09
  4. Récuperation des données envoyées par Form en POST
    Par bobatel dans le forum Langage
    Réponses: 9
    Dernier message: 26/04/2006, 14h59
  5. [Servlet] Form. Methode POST - Erreur 405
    Par Johnbob dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/11/2004, 16h46

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