2010-06-23 10 views
3

Nous avons une applet Java qui s'exécute en dehors de la fenêtre du navigateur. J'ai toujours supposé qu'en cliquant sur le X pour fermer la fenêtre (ou en cliquant sur la barre des tâches avec le bouton droit de la souris et en sélectionnant Fermer), il suffisait de fermer une applet.Quelle est la bonne façon de gérer la fermeture d'une applet Java?

Cependant, il s'avère que, une fois fermé de cette façon, notre applet plante Safari (à la fois sous Mac et Windows) à chaque fois.

Y a-t-il quelque chose que je suis supposé faire dans le code quand une applet se ferme? Le premier coupable qui vient à l'esprit dans le code est une classe/bibliothèque qui effectue une connexion avec sockets pour Jabber/XMPP.

+0

Vous devriez vraiment fermer toutes les ressources proches au cas où la JVM serait recyclée. Cependant, il ne devrait jamais "planter". –

Répondre

1

Utilisez le rappel de cycle de vie destroy() dans votre applet pour disposer de toutes les ressources ouvertes (threads, sockets, etc.). Que se passe-t-il si vous ne pouvez pas varier selon le navigateur, mais dans mon expérience (principalement Firefox), les threads continuent à fonctionner, forçant un redémarrage du navigateur afin de recharger votre application. Pas lisse. Je n'ai pas vu un crash dû à cela, mais la disposition des ressources est une bonne pratique de toute façon.

+0

J'ai également noté que si je recharger la page avec l'applet, il ne redémarre pas la machine virtuelle, c'est-à-dire que les singletons etc. ne sont pas recréés. – aioobe

+0

Oui, vous devez éviter d'avoir des variables statiques, des singletons et autres. Il vous suffit de coder votre application pour que plusieurs applications puissent s'exécuter en parallèle sur une machine virtuelle et tout ira bien. Bon oo pratique quand même. –

+0

Des recommandations sur la façon de traquer le coupable écrasant le navigateur? J'ai ajouté un destroy() et fait une déconnexion sur le client Jabber, puis assigné à null ... mais voyant toujours le problème. – Matt

Questions connexes