8 votes

L'applet Java n'est pas mis en cache

J'ai un problème avec une applet Java que j'ai déployée et qui refuse d'être mise en cache dans le cache "collant" de la jvm (ou par le navigateur). Pour une raison quelconque, chaque fois qu'un utilisateur charge la page sur laquelle se trouve cette applet, le jvm télécharge à nouveau le fichier jar depuis le serveur, ce qui entraîne un long délai.

La page web contenant l'applet est accessible via l'internet, donc selon la norme Documentation de Sun sur les applets Java J'utilise un <applet> plutôt qu'une balise <object> o <embed> étiquette.

Toute aide au débogage ou à l'identification du problème serait très appréciée.

Vous trouverez ci-dessous le tag complet de l'applet que j'utilise :

<applet alt="Scanning Applet failed to load" archive="scanning.jar"
        code="scanning.scanlet.class" codebase="/java/" codetype="application/java"
        height="30" mayscript="True" name="scanlet" width="200">
    <param name="domain" value="192.168.12.23" />
    <param name="publishName" value="scan_attachment" />
    <param name="publishURL" value="http://192.168.12.23/draft/update/52" />
    <param name="curURL" value="http://192.168.12.23/draft/edit/52" />

Your browser is unable to process the Java &lt;APPLET&gt; tag needed to display this applet
<br />
One solution would be to download a better web browser like
<a href="http://www.mozilla.com/firefox">Mozilla's Firefox</a>

</applet>

4voto

eppesuig Points 482

J'ai eu le même problème et j'ai trouvé une astuce qui doit être appliquée côté serveur. Il semble que les jars ne soient pas mis en cache si leur type mime est incorrect. Veuillez vérifier la réponse de votre serveur en utilisant le type mime application/java-archive.

Un autre problème que j'ai trouvé est lié à un bocal spécifique. Mon paramètre d'archive répertoriait de nombreuses jarres, mais seules quelques-unes étaient mises en cache. J'ai constaté que toutes les jarres jusqu'à une jarre spécifique étaient mises en cache, mais que toutes les autres n'étaient pas mises en cache du tout. Lors du chargement de l'applet, j'ai appuyé sur "5" dans la console java et j'ai trouvé ce message juste après la dernière jarre mise en cache : cache : signed entry missing from jar . Je ne sais toujours pas ce qui ne va pas avec ce fichier, mais j'ai déplacé ce jar à la fin de la liste des paramètres de l'archive. Cela a "résolu" le problème.

2voto

ArtemGr Points 2659

Personnellement, j'ai résolu les problèmes de mise en cache en utilisant les paramètres cache_archive et cache_version décrits à l'adresse suivante http://java.sun.com/javase/6/docs/technotes/guides/plugin/developer_guide/applet_caching.html

Mon cache_version est basé sur la date de modification du fichier, par exemple.

val archive = libs.map("/" + _.getPath).mkString (", ")
val version = libs.map(_.getUpdated / 1000 / 20 - 59281420).mkString (", ")

et pour travailler avec MSIE, cela se présente comme suit :

if (msie) {
  cms write <OBJECT
    classid="clsid:CAFEEFAC-0016-0000-0000-ABCDEFFEDCBA"
    codebase="http://java.sun.com/update/1.6.0/jinstall-6-windows-i586.cab"
    width="100%" height="100%">
    ...
    <PARAM name="cache_archive" value={archive}/>
    <PARAM name="cache_version" value={version}/>
  </OBJECT>
} else {
  cms write <applet ...
    cache_archive={archive} cache_version={version}></applet>
}

1voto

Jon Points 4349

Cet article officiel décrit comment vous pouvez modifier votre balise APPLET pour augmenter la mise en cache :

http://java.sun.com/products/plugin/1.3/docs/appletcaching.html

1voto

Vijay Points 6526

Pour ma part, j'ai dû supprimer les fichiers Jar de la balise Archive et me contenter de les inclure dans le paramètre cache_archive, et spécifier les versions de manière à ce que la date de dernière modification ne soit pas répercutée sur le serveur.

Je l'ai corrigé dans firefox

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X