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 :

mes fichiers ne sont disponibles en lecture qu'au bout de 2 min


Sujet :

Servlets/JSP Java

  1. #1
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut mes fichiers ne sont disponibles en lecture qu'au bout de 2 min
    Bonjour


    J'ai développé une application à base de servlet qui effectue un certain nombre de traitements sur des fichiers, le dernier étant effectué par un programme C. Une fois le dernier traitement terminé, je souhaite que l'utilisateur puisse afficher le fichier (texte). Donc je fait un petit lien, tout ce qu'il y a de plus normal.

    Ce qui est moins normal, c'est que lorsque juste après l'affichage des liens, je clique dessus, tomcat m'informe que la ressource n'est pas disponible. Par contre si pendant 2 min je ne fait rien et qu'ensuite j'actualise la page, le lien s'ouvre normalement.

    J'ai fait quelques tests supplémentaires. et il se passe que si juste apres l'apparition des liens, j'ouvre le fichier à la main dans netbeans, puis que j'actualise la page qui pose probleme, il n'y a plus à attendre 2 min, le fait d'avoir ouver le fichier à la main le rend disponible! (mais ça ne marche qu'avec netbeans. Si j'ouvre le fichier avec gedit, j'ai tjs le bug)

    Franchement ça me dépasse, quelqu'un a une idée sur la cause possible de ce comportement?
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  2. #2
    Membre chevronné
    Profil pro
    Développeur Java
    Inscrit en
    Novembre 2007
    Messages
    301
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2007
    Messages : 301
    Par défaut
    Peut être que tu fermes mal un des flux sur le fichier. S'il n'est pas fermé alors les ressources sont conservés par le système ce qui pourrait expliquer le comportement.

  3. #3
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut
    Ben c'est ce que j'ai pensé aussi, donc je suis allé voir dans le programme C ce qui se passait. Et il n'y avait aucun fclose() nulle part. Donc je les ai rajouté, j'ai recompilé et retesté, et ça fait toujours pareil.

    les fichiers ont pour nom (abstrait) dataErr et dataOut.

    J'ai rajouté les temporisation suivantes avant la servlet qui affiche les liens de téléchargement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    while(!dataOut.canRead());
    while(!dataErr.canRead());
    aucun changement...



    Je crois que je vais faire une fonction java qui recopie les fichiers pour voir si ça marche mieux apres..

    edit :

    J'ai crée la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public void copyFile(File inFile, String newPath, String newName) throws FileNotFoundException, IOException
          {
              BufferedReader br  = new BufferedReader(new FileReader(inFile));
              BufferedWriter bw  = new BufferedWriter(new FileWriter(newPath+"/"+newName));
              String line="";
              while((line=br.readLine())!=null)
              {
                  bw.write(line+"\n"); 
              }
              bw.close();
              br.close();
          }
    je l'ai appliqué à mes deux fichiers, et j'ai essayé de mettre des liens vers les fichiers créés. J'ai toujours le bug...

    pourtant j'ai bien fermé les flux..
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur J2EE Senior
    Inscrit en
    Mai 2008
    Messages
    419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur J2EE Senior
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Mai 2008
    Messages : 419
    Par défaut
    Bon j'ai résolu mon problème autrement.

    Comme il était décidément impossible d'utiliser ces fichus liens pour afficher les fichiers dans le navigateur, j'ai utilisé la servlet de téléchargement donnée dans la faq ici :

    http://java.developpez.com/faq/javae...GEMENT_FICHIER


    mais j'ai remplacé la variable filename par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getParameter("filename")
    idem la variable filepath par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    request.getParameter("filepath")+"/"+request.getParameter("filename")
    et dans ma servlet d'origine où étaient les liens de téléchargement, j'ai ajouté la fonction :

    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
     /**
         * Create a form with only headden fields, which will init the download of the requested datas.
         * @param filename Name of the file to be downloaded.
         * @param filepath Path to the file to be downloaded.
         * @return This form in a string.
         */
        public String makeDownloadForm(String filename, String filepath)
        {
            String ret="";
     
            ret+="<form method=\"post\" action=\"Download_servlet\">\n";
            ret+="<input type='hidden' value='"+filename+"' name='filename'>\n";
            ret+="<input type='hidden' value='"+filepath+"' name='filepath'>\n";
            ret+="<input type='submit' name='Submit' rows='20' value='Download "+filename+"'>\n";
            ret+="</form>\n";
     
            return ret;
        }
    et j'appelle celle-ci pour proposer le téléchargement du fichier.
    Mes cours sur l'écosystème Java EE - N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. mes fichiers sont ils récupérables?
    Par didand dans le forum Mac OS X
    Réponses: 0
    Dernier message: 13/01/2013, 12h39
  2. mes fichiers cryptés par Lockdir.exe sont perdus
    Par souha2008 dans le forum Windows
    Réponses: 13
    Dernier message: 06/09/2012, 09h45
  3. Réponses: 1
    Dernier message: 05/06/2008, 16h35
  4. Tout mes fichiers php ne sont pas lu
    Par vermix dans le forum Langage
    Réponses: 5
    Dernier message: 26/09/2006, 11h21
  5. Réponses: 9
    Dernier message: 29/10/2005, 20h11

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