Bonjour (Bonsoir )
J'ai un problème de lecture de fichier distant...
rapidement voilà comment ça se passe
L'applet fait une requête à une servlet
La servlet supprime le fichier s'il existe
La servlet écrit les données dans le fichier
La servlet envoie le nom de fichier à l'applet
L'applet ouvre le fichier
L'applet visualise le contenu dans un JEditorPane...
voilà 2 portions de code :
Code :
- // écriture par la servlet dans un fichier
- FileWriter outputFile = new FileWriter(filename);
- outputFile.write(html);
- outputFile.close();
- String wfname = Variables.temp_web + session.getId() + ".html";
- webname = new URL(wfname);
- // ...
- //envoie des données vers l'applet
- Object[] resul = new Object[2];
- resul[0] = message;
- resul[1] = webname;
- ObjectOutputStream outputToApplet = new ObjectOutputStream(response.getOutputStream());
- outputToApplet.writeObject(resul);
- outputToApplet.flush();
- outputToApplet.close();
|
Code :
- // création du JEditorPane
- zoneAffichage = new JEditorPane();
- zoneAffichage.setEditable(false);
- zoneAffichage.setContentType("text/html; charset=ISO-8859-1" );
- zoneAffichage.addHyperlinkListener(this);
- if (page != null) {
- // la page web a bien été générée
- InputStreamReader reader = new InputStreamReader(page.openStream());
- if (DEBUG) {
- char[] buf = new char[2000];
- reader.read(buf, 0, 2000);
- for (int i = 0; i < 2000; i++) {
- System.out.print(buf[i]);
- }
- reader = new InputStreamReader(page.openStream());
- }
- HTMLDocument doc = new HTMLDocument();
- zoneAffichage.read(reader, doc);
- } else {
- zoneAffichage.setText(DEFAULT_TEXT);
- zoneAffichage.setPreferredSize(new Dimension(800, 600));
- }
|
le truc, c'est que dans le morceau DEBUG, l'affichage des données lues dans le fichier ne correspond pas aux données qu'il y a réellement dans le fichier... J'ai donc mis un maximum de gestion pour empêcher la lecture précoce (attendre que le fichier soit bien supprimé avant de réécrire de nouvelles données dedans), mais ça ne change rien. Je pense donc à une gestion de cache par Tomcat. Un truc du genre : Si les requêtes sont très rapprochées, Tomcat ne va pas aller lire le fichier HTML, mais envoyer directement celui qu'il a en cache...
Seulement voilà, j'ai pas trouvé d'information concernant cette fonctionnalité, donc si quelqu'un en avait, ce serait super sympa de me rediriger, merci
Message édité par Predicator le 08-01-2004 à 18:02:16