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

Collection et Stream Java Discussion :

Limitation, declaration d'un tableau Char[]


Sujet :

Collection et Stream Java

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut Limitation, declaration d'un tableau Char[]
    Bonjour,
    je récupére le contenu d'une requête HTTP POST qui est en XML avec le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
            response.setContentType("text/html;charset=UTF-8");
     
            String tailleContenu = request.getHeader("Content-Length");
            BufferedReader report = request.getReader();
            if(cl=="") {
                cl="0";
            }        
            char[] rc = new char[Integer.parseInt(cl)];
            int a = report.read(rc,0,Integer.parseInt(cl));
    une fois le contenu récupéré, je le parse avec DOM, seulement quand tailleContenu est superrieur à 8000, une exceptions dom est provoquée (caractére invalide....).
    J'ai réécri le contenu du tableau rc dans un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            FileWriter fw = new FileWriter("rep1.xml");
    	int lu1;
    	fw.write(rc);
    	fw.close();
    et voila le contenu du fichier :
    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
     
    ...........(jusqu'à là tout est normal)
    - <member>
      <epc>urn:epc:id:gid:10.14020.1402</epc> 
     
    La page XML ne peut pas être affichée 
     
    Impossible d'afficher l'entrée XML en utilisant la feuille de style XSL. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement. 
     
     
    --------------------------------------------------------------------------------
     
    Un nom contenait un caractère non valide. Erreur de traitement de la ressource file:///D:rep.xml...
     
         <memb
     
    PAN> </member>
    il y a des caractéres null

    est ce que ça vient d'une limitation au niveau de la déclaration du tableau de char ?

  2. #2
    in
    in est déconnecté
    Membre Expert Avatar de in
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Localisation : France, Finistère (Bretagne)

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 612
    Par défaut
    je ne sais plus trop pour l'API DOM mais je crois me souvenir qu'il y a une méthode de dispo pour nettoyer les caractères inutiles.

    Peut etre que ça vaudrait le coup de l'appeler avant de parser ...

  3. #3
    Membre émérite Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Par défaut
    1 > Je comprends pas tout (ça veut dire quoi "il y a des caractères null"!)
    2 > C'est quoi le rapport entre <<tailleContenu>> et <<cl>> ?

  4. #4
    Membre émérite Avatar de yann2
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mai 2004
    Messages
    897
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 897
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(cl=="") {
                cl="0";
            }
    Le pb ne vient pas de là, mais préférez ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if("".equals(cl)) {
                cl="0";
            }

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 7
    Par défaut
    d'abord meci pour vos reponse,

    g_rare -> desolé j'ai oublié de le modifier "cl=tailleContenu" et pour les caractéres null : dans mon cas je recoit une requétte contenant 15000 char que je récupére grace à getReader puis grace à read je met le tout dans un char[] puis je l'écrit dans un fichier, mais quand je regarde le fichier il y a qu'une partie des caractéres qui est affichée et le reste est considéré comme nuls (si on l'ouvre avec un editeur de texte il met des "|||||||||||||||||" qu'on peut pas copier).

    yann2 -> le probléme n'est pas la puisque c'est juste pour eviter une exception au niveau du parseInt.

    j'ai essaiyé une autre approche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    str = report.readLine( );
            try {
                while (str != null){
                  System.out.println(str);
                  str = report.readLine( );
                  }
            }catch (Exception e) {
                System.err.println("message:"+e.getMessage());
                e.printStackTrace();
            }
    tomcat affiche qu'un certain nombres de ligne puis renvoie cette exception :

    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
    java.io.IOException
            at org.apache.catalina.connector.InputBuffer.reset(InputBuffer.java:439)
            at org.apache.catalina.connector.CoyoteReader.reset(CoyoteReader.java:121)
            at org.apache.catalina.connector.CoyoteReader.readLine(CoyoteReader.java:178)
            at report.processRequest(report.java:62)
            at report.doPost(report.java:96)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:709)
            at javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:252)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
            at org.netbeans.modules.web.monitor.server.MonitorFilter.doFilter(MonitorFilter.java:362)
            at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:202)
            at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:173)
            at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
            at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:178)
            at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:126)
            at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:105)
            at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:107)
            at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:148)
            at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:856)
            at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processConnection(Http11Protocol.java:744)
            at org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:527)
            at org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:80)
            at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:684)
            at java.lang.Thread.run(Thread.java:534)
    donc :
    soit : le chr [] est limité à la déclaration
    soit Tomcat ne gére pas cette taille de requéte mais dans la doc il disent que par defaut, tomcat mais 2Mo à disposition de POST.

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

Discussions similaires

  1. declaration d'un tableau
    Par fethia dans le forum C
    Réponses: 4
    Dernier message: 07/12/2006, 12h28
  2. declaration d'un tableau dynamique 2 dimensions
    Par mike600river dans le forum C++Builder
    Réponses: 4
    Dernier message: 22/05/2006, 08h53
  3. Erreur lors de la déclaration d'un tableau
    Par petdelascar dans le forum C
    Réponses: 9
    Dernier message: 12/05/2006, 19h41
  4. declaration d'un tableau de listes
    Par flah06 dans le forum C++
    Réponses: 1
    Dernier message: 15/11/2005, 18h16
  5. [LG]Déclaration d'un tableau.
    Par Mike888 dans le forum Langage
    Réponses: 36
    Dernier message: 24/12/2003, 17h42

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