Comment empêcher les téléchargements Java Web Start parallèles de la même application?


Nous avons déployé notre application Java Swing sur le serveur Web intranet, afin qu'elle puisse être consultée et téléchargée par les machines clientes utilisant Java Web Start. La taille totale de tous les fichiers d'application (fichiers jar) est de 130 Mo.

Nous sommes maintenant confrontés à ce problème: lorsque l'utilisateur clique sur un lien et lance la procédure de téléchargement, une boîte de dialogue avec barre de progression apparaît. Lors du téléchargement, s'il clique à nouveau sur le lien, Java Web Start lancera une autre procédure de téléchargement. À ce moment-là sera deux téléchargements parallèles (deux boîtes de dialogue de progression) de la même application. Finalement, lorsque les téléchargements sont terminés, il y aura environ 260 Mo de fichiers dans le cache utilisateur (ou système), prouvant qu'il y avait en fait deux (mêmes) applications téléchargées.

Existe-t-il un moyen d'empêcher plusieurs téléchargements de la même application en même temps? Est-il possible de configurer Java Web Start Launcher afin qu'il puisse détecter quand il y a déjà téléchargement de la même application dans le progrès?

Juste pour clarifier: nos machines clientes ne sont pas en fait des clients classiques - ce sont des serveurs Citrix desservant des centaines d'utilisateurs de terminaux. Ainsi, une situation où il y a plus d'un téléchargement de la même application en même temps pourrait facilement se produire.

Author: dangling_pointer, 2012-04-12

1 answers

Puisque personne n'a répondu, je vais le faire, alors peut-être qu'un jour cela sera utile à quelqu'un avec le même problème. Sur la base des informations que j'ai et des tests que j'ai effectués, j'ai constaté qu'il n'y avait aucun moyen de demander à Java Web Start de détecter les demandes pour la même application (faites à partir du même utilisateur sur la même machine) qui est actuellement déjà en cours de téléchargement.

Apparemment, Java Web Start lancera un autre processus de téléchargement, il y aura donc deux téléchargements identiques de deux contenus d'application identiques - consommant ainsi inutilement le réseau, le serveur Web et les ressources de disque. C'est tout un problème dans les systèmes de livraison d'applications virtuelles comme Citrix XenApp.

La seule solution qui me vient à l'esprit est de créer une application Java launcher personnalisée qui synchronise les demandes de téléchargement avec le fichier de verrouillage. Quelque chose comme:

  1. Attendez dans une boucle (montrez à l'utilisateur un indicateur de progression) jusqu'à ce que le fichier de verrouillage soit créé (le verrouillage est acquis).
  2. Téléchargez les ressources mises à jour de l'application à partir du serveur (le cas échéant): javaws -import -silent http://someserver/jnlp-app.jnlp
  3. Démarrer l'application:javaws http://someserver/jnlp-app.jnlp
  4. Supprimer le fichier de verrouillage (verrouillage)
 0
Author: dangling_pointer, 2012-04-16 22:49:21