2009-06-04 6 views
4

Chaque fois que nous mettons à jour notre application Java (client Java et serveur Java), nous avons les problèmes que certains clients env. 1% - 2% ne charge pas les nouveaux fichiers jar. Cela se produit avec les applets et également avec Java Web Start. Si vous effacez le cache Java, tout fonctionne correctement.Pourquoi certaines fois Java ne demande pas de nouvelles versions de fichiers jar?

Une idée pourquoi Java ne vérifie pas les nouveaux fichiers jar à chaque démarrage?

Répondre

2

Cela peut être problématique à résoudre, mais il existe une solution de contournement facile pour cela. Au lieu de se fier à une mise à jour de cache correcte, assurez-vous simplement que les noms de fichiers JAR incluent le numéro de version/build de l'application. Les fichiers JAR pour la nouvelle version de l'applet vont alors effectivement vivre sur d'autres URL (vous devez également changer la page web bootstrap).

+0

Cela ne causerait-il pas d'autres problèmes étranges? – asalamon74

+0

Absolument. Le JNLP est également mis en cache et donc soumis aux mêmes problèmes, et vous le modifiez à chaque version pour inclure les nouveaux numéros de version. Cela pourrait améliorer la fiabilité, mais je parie que ce n'est pas encore efficace à 100%. – banjollity

+0

Je peux garantir qu'il y a des problèmes si le fichier JNLP est mis en cache. Parfois, je me retrouve au hasard à effacer le cache de Firefox pour corriger une erreur webstart bizarre. – Mark

1

J'ai été là et la seule solution dont le fonctionnement est garanti à 100% est d'avoir un chemin/URL différent pour vos ressources (pots, images, etc.). Personne ne peut garantir qu'il ne peut pas y avoir de bogues dans le mécanisme de mise en cache (si vous regardez dans la liste de changements du JDK toutes les 2-3 versions, il y a quelque chose en rapport avec le mécanisme de mise en cache des bocaux).

Alors, allez avec cette (juste append dernière modification sous forme de chaîne à la fin de l'URL du pot) et vous n'aurez aucun problème:

Ex: http://myserver/applet/codebase/your_jar.jar?v=2487387543434 et prochaine version, il sera http://myserver/applet/codebase/your_jar.jar?v=343438534545455 < - c'est dernière modification du pot.

Questions connexes