Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1214 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  servlet, pdf, internet explorer

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

servlet, pdf, internet explorer

n°905083
the real m​oins moins
Posté le 22-11-2004 à 23:11:02  profilanswer
 

Salut,
 
Il semblerait que ce cher IE ait un problème pour ouvrir les pdf si on ne spécifie pas de content-length dans les entetes http. Or, si ce pdf est généré à la volée, on ne le connait pas d'avance. Je vois deux possibilités:
- bufferer tout le bordel generé en mémoire, et rebalancer tout le byte[] une fois qu'on en connait la longueur, avec le content-length bien setté.  
Mon collègue à choisi cet approche, et jme demande si c'est pas (entre autres joyeusetés made in lui) grace à ça qu'on mange des OutOfMemory a tout bout de champ [:itm]
 
- balancer le stream de mon pdf generé sur le file system, puis une fois ce fichier generé (dans un repertoire temporaire), je peux aussi, forcément, en connaitre la longueur, et donc setter le content-length correctement: je pense essayer cet approche; même si je suis pas fan, c'est la seule que je vois pour l'instant pour contrer ce cher IE.
 
Si qqun à des suggestions, une meilleure idée, ou voit un problème avec cette deuxième approche, je suis preneur :)  
 
:hello:

mood
Publicité
Posté le 22-11-2004 à 23:11:02  profilanswer
 

n°905097
schnapsman​n
Zaford Beeblefect
Posté le 22-11-2004 à 23:21:35  profilanswer
 

il n'y a pas de streaming possible avec le pdf (enfin à ma connaissance...), donc la deuxième solution est très bien... quoique le mieux serait de ne pas limiter en mémoire la jvm dans le serveur d'app et de booster les machines de prod en ram [:itm]
 
au fait, bon anniversaire [:kahn21] [:popok] [:taiche]


Message édité par schnapsmann le 22-11-2004 à 23:31:24
n°905109
the real m​oins moins
Posté le 22-11-2004 à 23:37:22  profilanswer
 

le -Xmx de cette jvm est à 256M, alors que le pdf produit doit peser +/-2 mo ... [:icon9]
 
(avec un pdf de 200k ça passe mais c'est lent [:itm])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°905112
schnapsman​n
Zaford Beeblefect
Posté le 22-11-2004 à 23:39:47  profilanswer
 

the real moins moins a écrit :

le -Xmx de cette jvm est à 256M, alors que le pdf produit doit peser +/-2 mo ... [:icon9]
 
(avec un pdf de 200k ça passe mais c'est lent [:itm])


faut faire péter plus de mémoire, s'il y a 200 requetes de génération de pdf de 2Mo en même temps, ça rentre pas dans 256Mo [:jagstang]

n°905114
the real m​oins moins
Posté le 22-11-2004 à 23:51:19  profilanswer
 

meme avec une 1 seule requete ça rentre pas, là [:petrus75]
 
 
(et euh, les 200 requetes, elles attendront dans le dispatcher du thread pool nan? [:petrus75])


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
n°905118
schnapsman​n
Zaford Beeblefect
Posté le 22-11-2004 à 23:55:52  profilanswer
 

the real moins moins a écrit :

meme avec une 1 seule requete ça rentre pas, là [:petrus75]


[:jean-guitou]
 

the real moins moins a écrit :

(et euh, les 200 requetes, elles attendront dans le dispatcher du thread pool nan? [:petrus75])


ouais sur un serveur configuré petit joueur http://www.microserfs.net/HFR/petrus/cupetrus.gif

n°905120
simogeo
j'ai jamais tué de chats, ...
Posté le 22-11-2004 à 23:58:36  profilanswer
 

bon annif mwin mwin http://simogeo.free.fr/hfr/petruscube.gif


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°905121
chrisbk
-
Posté le 22-11-2004 à 23:59:40  profilanswer
 

pourquoi il est tout moche ce petrus ?

n°905130
benou
Posté le 23-11-2004 à 00:11:05  profilanswer
 

the real moins moins a écrit :

Il semblerait que ce cher IE ait un problème pour ouvrir les pdf si on ne spécifie pas de content-length


ca me parait suspect ...
t'es sûr de toi ?


---------------
ma vie, mon oeuvre - HomePlayer
n°905132
simogeo
j'ai jamais tué de chats, ...
Posté le 23-11-2004 à 00:12:35  profilanswer
 

chrisbk a écrit :

pourquoi il est tout moche ce petrus ?


 
j'ai du chier l'export en gif ... mais bon, spa très grave pour un petrus  :ange:


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
mood
Publicité
Posté le 23-11-2004 à 00:12:35  profilanswer
 

n°905137
chrisbk
-
Posté le 23-11-2004 à 00:15:19  profilanswer
 

un petrus, c'est bleu, merde [:petrus75]

n°905141
the real m​oins moins
Posté le 23-11-2004 à 00:23:37  profilanswer
 

benou a écrit :

ca me parait suspect ...
t'es sûr de toi ?

oui.
 
http://www.lowagie.com/iText/faq.html#msie
 
(il semblerait qu'il y ait d'autres "solutions", mais aucune n'est réellement explicable)


Message édité par the real moins moins le 23-11-2004 à 00:26:18
n°905145
simogeo
j'ai jamais tué de chats, ...
Posté le 23-11-2004 à 00:25:35  profilanswer
 

chrisbk a écrit :

un petrus, c'est bleu, merde [:petrus75]


 
un petrus, c'est laid, merde [:aloy]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°905151
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 23-11-2004 à 00:29:42  profilanswer
 

http://www.lgml.net/HFR/petrus_blink.gif
[:sisicaivrai]


Message édité par Taiche le 23-11-2004 à 00:30:11

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°905155
simogeo
j'ai jamais tué de chats, ...
Posté le 23-11-2004 à 00:31:47  profilanswer
 


 
 [:cyriadis]


---------------
from here and there -- \o__________________________________ -- la révolution de la terre, en silence
n°905157
the real m​oins moins
Posté le 23-11-2004 à 00:32:59  profilanswer
 

vous etes lourds http://rulzofpunk.free.fr/smileys/fouhello.gif


Message édité par the real moins moins le 23-11-2004 à 00:33:43
n°905158
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 23-11-2004 à 00:34:08  profilanswer
 


\o/
:jap:


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°905160
chrisbk
-
Posté le 23-11-2004 à 00:34:46  profilanswer
 

Bonnanif taiche [:udok]

n°905163
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 23-11-2004 à 00:35:26  profilanswer
 

Enfin quelqu'un qui y pense [:atsuko]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
n°905245
LAs3R
Posté le 23-11-2004 à 08:14:24  profilanswer
 

j'avais le meme pb que toi avec IE mais j'ai opté pour la 1ere solution qui me parrait plus "clean".
 

Code :
  1. response.setContentType("application/pdf" );
  2. ByteArrayOutputStream ba = new ByteArrayOutputStream();
  3. pdf.render(ba);
  4. response.setContentLength(ba.size());
  5. ba.writeTo(response.getOutputStream());
  6. response.getOutputStream().flush();

n°905247
benou
Posté le 23-11-2004 à 08:48:49  profilanswer
 

de toute façon y a pas trop le choix ... faut bien le générer pour onnaître sa taille finale, et vu qu'il faut envoyer la taille avant le contenu lui-même, faut forcément le générer entièrement pour connaître sa taille.
 
Y a une 2e alternative si tu es vraiment à l ramasse côté mémoire, c'est de générer 2 fois le fichier : la première fois dans un Stream qui ne fait que de compter la taille, la deuxième fois en balançant ca dans stream de la réponse.
 
Si tu fais ca, vérifit quand même que ton moteur de servlet ne bufferise pas le tout par derrière ...


---------------
ma vie, mon oeuvre - HomePlayer
n°905294
the real m​oins moins
Posté le 23-11-2004 à 10:32:19  profilanswer
 

laser > ben c'est ce qu'on fait pour l'instant, et un byte[] de 2mo ou +, ça semble pas etre une super idée.
 
benou > bah euh ouais c'est ma 2e solution, sauf que je compte pas surcharger le serveur inutilement en generant le pdf une 2e fois...

n°905665
the real m​oins moins
Posté le 23-11-2004 à 15:21:43  profilanswer
 

et hop, un petit coup de balais et le pdf fais 15% de la taille qu'il faisait ce matin avec les meme données \o/

n°905729
LAs3R
Posté le 23-11-2004 à 16:11:37  profilanswer
 

oki
c'est clair que 2 mo c'est un peu gros.
ceux que je génére habituellement tournent autour de 500ko (10 pages environ dont une sur deux avec images etc...)
 
sinon la 2eme soluce me parrait un peu galere car tu devra certaiement identifier de maniere unique les pdf que tu crées etc... :/
 
sinon autre solution, tu interdit l'utilisation d'IE  :lol:

n°905739
the real m​oins moins
Posté le 23-11-2004 à 16:14:58  profilanswer
 

euh, identifier de maniere unique: pas compliqué de generer une GUID, pas compliqué de s'assurer que le fichier n'existe pas au moment de le créer, pas compliqué de le virer apres, bref, pas compliqué :D

n°905743
LAs3R
Posté le 23-11-2004 à 16:17:35  profilanswer
 

mais c'est un peu dommage quand meme :)
 
ps : je suis un partisant de la "loi du moindre effort"  :lol:

n°906002
nraynaud
lol
Posté le 23-11-2004 à 20:22:45  profilanswer
 

the real moins moins a écrit :

pas compliqué de s'assurer que le fichier n'existe pas au moment de le créer

je sors ma pelle à clous ?


---------------
trainoo.com, c'est fini
n°906009
darklord
You're welcome
Posté le 23-11-2004 à 20:36:51  profilanswer
 

the real moins moins a écrit :

Il semblerait que ce cher IE ait un problème pour ouvrir les pdf si on ne spécifie pas de content-length dans les entetes http.  


 
Faudra que je vérifie sur la servlet toute conne que j'ai faite le mois passé mais je ne me souviens pas avoir foutu un header quelconque :o

n°906018
the real m​oins moins
Posté le 23-11-2004 à 20:43:09  profilanswer
 

nraynaud a écrit :

je sors ma pelle à clous ?

fais pas chier, je fous un guid dans le nom de mon fichier :o


Message édité par the real moins moins le 23-11-2004 à 20:44:29
n°906019
the real m​oins moins
Posté le 23-11-2004 à 20:45:06  profilanswer
 

darklord a écrit :

Faudra que je vérifie sur la servlet toute conne que j'ai faite le mois passé mais je ne me souviens pas avoir foutu un header quelconque :o

ben faudra que t'essaies avec plusieurs versions d'ie, avec du pdf generé à la volée et ouvert *dans* ie, et tu verras que ça ira pas :o

n°906024
darklord
You're welcome
Posté le 23-11-2004 à 20:49:08  profilanswer
 

the real moins moins a écrit :

ben faudra que t'essaies avec plusieurs versions d'ie, avec du pdf generé à la volée et ouvert *dans* ie, et tu verras que ça ira pas :o


 
Oui ok, au temps pour moi. Le fichier est effectivement sur disque avant d'etre renvoyé.
 
Il est ouvert dans IE et j'ai essayé avec IE 5, 5.5 et 6

n°906029
the real m​oins moins
Posté le 23-11-2004 à 20:52:33  profilanswer
 

euh bah étant sur disque, ça change peut etre rien, mais a priori tu dois qd meme setter le content-length
 
j'ai pas testé, mais steve m'a reporté ce probleme, et on a trouvé la soluce dans la faq d'itext, donc bon

n°906173
patachou
Posté le 23-11-2004 à 23:14:31  profilanswer
 

the real moins moins a écrit :

fais pas chier, je fous un guid dans le nom de mon fichier :o


C'est quoi un guid ?

n°906266
chrisbk
-
Posté le 24-11-2004 à 08:43:17  profilanswer
 

patachou a écrit :

C'est quoi un guid ?


 
un Gui Delage, ca permet de s'y retrouver au milieu d'un océan de données


---------------
NP: HTTP Error 764 Stupid coder found
n°906382
patachou
Posté le 24-11-2004 à 11:10:24  profilanswer
 

Oui d'accord je connaissais pas alors je me renseignais, j'ai regardé un peu sur le net pour savoir un peu plus.
Merci de l'info

n°906384
schnapsman​n
Zaford Beeblefect
Posté le 24-11-2004 à 11:15:18  profilanswer
 

[:petrus75]


---------------
From now on, you will speak only when spoken to, and the first and last words out of your filthy sewers will be "Sir!"
n°906417
the real m​oins moins
Posté le 24-11-2004 à 11:44:52  profilanswer
 
n°906512
patachou
Posté le 24-11-2004 à 13:27:34  profilanswer
 

Merci pour le lien, y a des implémentations en java ?

n°906913
darklord
You're welcome
Posté le 24-11-2004 à 18:36:51  profilanswer
 

patachou a écrit :

Merci pour le lien, y a des implémentations en java ?


 
oui, Xdoclet a une implémentation (pour les PK d'un EJB si mes souvenirs sont bon)


---------------
Just because you feel good does not make you right
n°908056
the real m​oins moins
Posté le 25-11-2004 à 22:31:55  profilanswer
 

Code :
  1. /**
  2. * <p>A 32 byte GUID generator (Globally Unique ID).
  3. * These artificial keys SHOULD <strong>NOT </strong> be seen by the user,
  4. * not even touched by the DBA but with very rare exceptions,
  5. * just manipulated by the database and the programs.</p>
  6. *
  7. * <p>Usage: pass an object reference to the generate method,
  8. * somehow relative to the object to which you want to generator a guid for.
  9. * This is to ensure more "randomness". (as long as you pass a different
  10. * object for each call it should have a correct behaviour)</p>
  11. *
  12. * <p><strong>This was copied from *Util class generated by XDoclet.</strong></p>
  13. *
  14. */
  15. public class Guid {
  16.     /** Cached per JVM server IP. */
  17.     private static String hexServerIP = null;
  18.     // initialise the secure random instance
  19.     private static final SecureRandom seeder = new SecureRandom();
  20.     /**
  21.      * Generates a GUID.
  22.      *
  23.      * @throws IllegalStateException if it can not get the local ip address of the machine.
  24.      */
  25.     public static final String generate(Object o) throws IllegalStateException {
  26.         StringBuffer tmpBuffer = new StringBuffer(16);
  27.         if (hexServerIP == null) {
  28.             InetAddress localInetAddress = null;
  29.             try {
  30.                 // get the inet address
  31.                 localInetAddress = InetAddress.getLocalHost();
  32.             } catch (UnknownHostException uhe) {
  33.                 throw new IllegalStateException("Guid: Could not get the local IP address using InetAddress.getLocalHost()!" );
  34.             }
  35.             byte serverIP[] = localInetAddress.getAddress();
  36.             hexServerIP = hexFormat(getInt(serverIP), 8);
  37.         }
  38.         String hashcode = hexFormat(System.identityHashCode(o), 8);
  39.         tmpBuffer.append(hexServerIP);
  40.         tmpBuffer.append(hashcode);
  41.         long timeNow = System.currentTimeMillis();
  42.         int timeLow = (int) timeNow & 0xFFFFFFFF;
  43.         int node = seeder.nextInt();
  44.         StringBuffer guid = new StringBuffer(32);
  45.         guid.append(hexFormat(timeLow, 8));
  46.         guid.append(tmpBuffer.toString());
  47.         guid.append(hexFormat(node, 8));
  48.         return guid.toString();
  49.     }
  50.     private static int getInt(byte bytes[]) {
  51.         int i = 0;
  52.         int j = 24;
  53.         for (int k = 0; j >= 0; k++) {
  54.             int l = bytes[k] & 0xff;
  55.             i += l << j;
  56.             j -= 8;
  57.         }
  58.         return i;
  59.     }
  60.     private static String hexFormat(int i, int j) {
  61.         String s = Integer.toHexString(i);
  62.         return padHex(s, j) + s;
  63.     }
  64.     private static String padHex(String s, int i) {
  65.         StringBuffer tmpBuffer = new StringBuffer();
  66.         if (s.length() < i) {
  67.             for (int j = 0; j < i - s.length(); j++) {
  68.                 tmpBuffer.append('0');
  69.             }
  70.         }
  71.         return tmpBuffer.toString();
  72.     }
  73. }


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  servlet, pdf, internet explorer

 

Sujets relatifs
site internetPb avec explorer et firefox
mon site ne marche pas avec internet explorerAidez Moi pour un site internet!!
[résolu]newbie servlet / jspServlet : Attente au sein d'une webapp
Espaces vertical entres les images sur internet explorer.communication servlet applet
Plus de sujets relatifs à : servlet, pdf, internet explorer


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR