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 :

les fichier pdf générés se plaçe dans le répertoire "logs" de tomcat


Sujet :

Tomcat et TomEE Java

  1. #1
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut les fichier pdf générés se plaçe dans le répertoire "logs" de tomcat
    bonjour

    dans mon programe je génère des fichier pdf(mais je ne les souvgard pas dans un dossier quelque part)
    et j'utilse le response pour les lire comme suit
    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
     
    	response.setContentType("application/octet-stream");
    			response.setHeader("Content-Disposition","attachment; filename=\""+trans+".pdf\"");
    //			 Calculer le flux à renvoyer au client
    			FileInputStream is = new FileInputStream(""+trans+".pdf");
    			byte buffer[] = new byte[1024];
    			int nbLecture;
    //			 Envoyer le flux dans la réponse
    			OutputStream os = response.getOutputStream();
    			while ((nbLecture = is.read(buffer)) != -1) {
    			os.write(buffer, 0, nbLecture);
    			}
    			os.close();
     
    			   }
    mais j'ai remarqué qu'à chaque fois un fichier est généré par un client je le trouve dans le répertoire "logs" de tomcat du serveur
    et ce problème ne se pose pas quand je travail sur ma machine en local
    je sais pas si c'est une affaire de configuration de tomcat
    (celle du serveur diffère de la mien??)
    ou bien cela se produit quand il y'a un client et un serveur ??

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileInputStream is = new FileInputStream(""+trans+".pdf");
    ça crée le fichier dans le répertoire courant, dont la valeur n'est pas précisée en java enterprise (et donc à éviter!)


    utilise plutot l'api java de File pour les fichiers temporaires:

    File.createTempFile

  3. #3
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    pouvez me dire comment je réctifie mon code
    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
     
    response.setContentType("application/octet-stream");
    			response.setHeader("Content-Disposition","attachment; filename=\""+trans+".pdf\"");
    //			 Calculer le flux à renvoyer au client
    			FileInputStream is = new FileInputStream(""+trans+".pdf");
    			byte buffer[] = new byte[1024];
    			int nbLecture;
    //			 Envoyer le flux dans la réponse
    			OutputStream os = response.getOutputStream();
    			while ((nbLecture = is.read(buffer)) != -1) {
    			os.write(buffer, 0, nbLecture);
    			}
    			os.close();
     
    			   }
    si j'enlève
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    FileInputStream is = new FileInputStream(""+trans+".pdf");
    je mis quoi à sa plaçe et meme pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    while ((nbLecture = is.read(buffer)) != -1) {
    			os.write(buffer, 0, nbLecture);
    			}
    merci

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    New FileInputStream(File.createTempFile(.....));
    Pour le reste, y a rien à changer.

  5. #5
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    voila ce que j'ai fais
    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
     
    	response.setContentType("application/octet-stream");
    			response.setHeader("Content-Disposition","attachment; filename=\""+trans+".pdf\"");
    //			 Calculer le flux à renvoyer au client
    	//		FileInputStream is = new FileInputStream(""+trans+".pdf");
     
    			FileInputStream is =new FileInputStream(File.createTempFile(""+trans+".pdf",""+trans+".pdf"));	
    			byte buffer[] = new byte[1024];
    			int nbLecture;
    //			 Envoyer le flux dans la réponse
    			OutputStream os = response.getOutputStream();
    			while ((nbLecture = is.read(buffer)) != -1) {
    			os.write(buffer, 0, nbLecture);
    			}
    			os.close();
     
    			   }
    mais c'est la meme chose je les trouve toujours dans le répertoire de tomcat??

  6. #6
    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
    Heu, c'est dans le code de lecture du fichier là. C'est le code d'écriture du fichier qu'il faut modifier pour que ca stocke ailleurs hein

  7. #7
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    voila le code de la création du fichier pdf
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
       JasperPrint jasperPrint = JasperFillManager.fillReport( new FileInputStream(jasperFile), parameters, con);
     
    // - Création du rapport au format PDF
    			JasperExportManager.exportReportToPdfFile(jasperPrint, ""+trans+".pdf");
    par quoi je dois remplaçer "new FileInputStream(jasperFile), " dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     JasperPrint jasperPrint = JasperFillManager.fillReport( new FileInputStream(jasperFile), parameters, con);
    puisque quand j'ai fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
      JasperPrint jasperPrint = JasperFillManager.fillReport( new FileInputStream(File.createTempFile("jasperFile","jasperFile")), parameters, con);	  
     
    			JasperExportManager.exportReportToPdfFile(jasperPrint, ""+trans+".pdf");
    y'avais une erreur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    	at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
    	at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
    	at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
    	at java.io.ObjectInputStream.<init>(Unknown Source)

  8. #8
    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
    Citation Envoyé par john_wili Voir le message
    par quoi je dois remplaçer "new FileInputStream(jasperFile)
    par rien, c'est l'output, 2 lignes plus bas que tu dois changer. Passe lui le nom d'un fichier créé dans un dossier temporaire, si tu veux le stocker ailleurs que dans le répertoire courant.

  9. #9
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut

    j'ai pas compris
    stp peux tu me montrer dans mon code ??
    merci

  10. #10
    Membre éclairé Avatar de Lorantus
    Homme Profil pro
    Consultant développeur indépendant / Java/VB/C(++)/ObjectPal
    Inscrit en
    Août 2007
    Messages
    599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Consultant développeur indépendant / Java/VB/C(++)/ObjectPal

    Informations forums :
    Inscription : Août 2007
    Messages : 599
    Points : 882
    Points
    882
    Par défaut
    Question toute bete ...
    Pourquoi faire un fichier temporaire ? Serait-il pas mieux de redireiger le flux de sortie vers l'output tout simplement (vers le client du coup) ?

  11. #11
    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
    Citation Envoyé par john_wili Voir le message

    j'ai pas compris
    stp peux tu me montrer dans mon code ??
    merci
    Je peux pas etre plus clair, tu dois prendre la ligne où tu précise à jasper report quel est le fichier à utiliser pou l'output (pas le input!!!!) et tu remplace le nom de fichier actuel par un nom de fichier généré par File.createTempFile(....)

  12. #12
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    tu peux pas me monter directement dans mon code
    cela nous évite le désaccord dans lequel on est
    car toutes les solutions que j'ai essayé ça donne rien
    voila mon code
    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
     
      JasperPrint jasperPrint = JasperFillManager.fillReport( new FileInputStream(jasperFile), parameters, con);
     
     // - Création du rapport au format PDF
    	JasperExportManager.exportReportToPdfFile(jasperPrint, ""+trans+".pdf"); 
    response.setContentType("application/octet-stream");
     
    			response.setHeader("Content-Disposition","attachment; filename=\""+trans+".pdf\"");
    //			 Calculer le flux à renvoyer au client
    			FileInputStream is = new FileInputStream(""+trans+".pdf");
     
     
    			byte buffer[] = new byte[1024];
    			int nbLecture;
    //			 Envoyer le flux dans la réponse
    			OutputStream os = response.getOutputStream();
    			while ((nbLecture = is.read(buffer)) != -1) {
    			os.write(buffer, 0, nbLecture);
    			}
    			os.close();
    merci

  13. #13
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
        File report = File.createTempFile("report","pdf");
        JasperExportManager.exportReportToPdfFile(jasperPrint, report.getAbsolutePath());

  14. #14
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    désolé mon ami mais ta solution ne marche pas !!

  15. #15
    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
    peux-tu être plus précis sur "ne marche pas"???

  16. #16
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    svp j'ai encors besoin d'aide
    je suis bloqué en se problème
    à chaque fois je génère un fichier pdf je le trouve dans le dossier "bin" du répertoire tomcat

    cela consomme de l'éspace disque de plus en plus que les fichiers sont important
    voila le code ou sont générés les pdf
    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
     
     
     
      JasperPrint jasperPrint = JasperFillManager.fillReport( new FileInputStream(jasperFile), parameters, con);
     
    			  // - Création du rapport au format PDF
    	JasperExportManager.exportReportToPdfFile(jasperPrint, ""+trans+".pdf"); 
     
    	response.setContentType("application/octet-stream");
     
    			response.setHeader("Content-Disposition","attachment; filename=\""+trans+".pdf\"");
    //			 Calculer le flux à renvoyer au client
    			FileInputStream is = new FileInputStream(""+trans+".pdf");
     
     
    			byte buffer[] = new byte[1024];
    			int nbLecture;
    //			 Envoyer le flux dans la réponse
    			OutputStream os = response.getOutputStream();
    			while ((nbLecture = is.read(buffer)) != -1) {
    			os.write(buffer, 0, nbLecture);
    			}
    			os.close();
     
    			   }

  17. #17
    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
    toujours le même problème -> toujours la même solution!

  18. #18
    Membre régulier
    Inscrit en
    Juin 2008
    Messages
    394
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 394
    Points : 73
    Points
    73
    Par défaut
    File report = File.createTempFile("report","pdf");
    JasperExportManager.exportReportToPdfFile(jasperPrint, report.getAbsolutePath());
    voila votre solution mais je l'ai pas compris puisque les fichiers qui posent problèmes c'est les fichiers pdf ""+trans+".pdf" générés par le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     // - Création du rapport au format PDF
    	JasperExportManager.exportReportToPdfFile(jasperPrint, ""+trans+".pdf");
    or ce que vous avez suggérés c'est de créer un fichier temporaire "report"
    ensuit le résultat de l'exportation vers le pdf sera mis dans "report.getAbsolutePath()"
    File report = File.createTempFile("report","pdf");
    JasperExportManager.exportReportToPdfFile(jasperPrint, report.getAbsolutePath());
    d'ailleurs j'ai eu une erreur
    "Le fichier spécifié est introuvable"

    je ne comprend pas

  19. #19
    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
    effectivement, c'est ce que je propose, créer le fichier *ailleurs* dans l'endroit en fait dédié au stockage de fichiers temporaires (au lieu de faire ça a pouf dans le répertoire courant). Ce code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    File report = File.createTempFile("report","pdf");
    JasperExportManager.exportReportToPdfFile(jasperPrint, report.getAbsolutePath());
    JasperExportManager.exportReportToPdfFile ne peut pas se pleindre de l'absence du fichier en question, puisque c'est lui qui va le créer. A mon avis t'as mis ce code coté lecture du fichier au lieu du coté création du fichier!

Discussions similaires

  1. [AC-2003] Nommer les fichiers PDF générés automatiquement à partir d'un état
    Par Zodiarch dans le forum VBA Access
    Réponses: 5
    Dernier message: 14/01/2011, 03h15
  2. [phpToPDF] Comment afficher du texte dans le fichier pdf généré ?
    Par ginger4957 dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 18/05/2009, 11h16
  3. les fichiers pdf générés par le client se plaçe dans le serveur
    Par john_wili dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 10/03/2009, 17h49

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