Astuces et dépannage pour les applets Java

Lors de l'exécution de l'applet, la barre d'état affiche des messages tels que "<nom-applet> chargé", "<nom-applet> initialisé" et "<nom-applet> démarré". Si l'applet ne se charge pas correctement, choisissez Outils - Afficher la console de débogage Java pour analyser l'applet et identifier le problème.

Si l'applet n'est pas active

  • Si l'applet est associée à un lien sur un site Web, vérifiez que le proxy Web est en cours d'exécution. Vous trouverez le nom du proxy Web dans le document Site. Si vous travaillez sous Windows, ouvrez une session DOS et tapez la commande ping suivie du nom du proxy pour déterminer si la connexion est correcte. Si la commande renvoie une erreur au lieu d'une réponse, contactez votre administrateur système pour qu'il restaure le proxy Web.
  • Assurez-vous d'avoir ajouté tous les fichiers d'applet nécessaires. Sélectionnez Applet Java - Actualiser pour ajouter des fichiers à l'applet. Pour vérifier la présence de tous les fichiers requis, sélectionnez Tous comme type de fichier, puis cliquez sur Tout sélectionner pour prendre en compte la totalité des fichiers.
  • Vérifiez que le nom désignant les fichiers de l'applet est correct. Java faisant la distinction entre les majuscules et les minuscules, les noms de fichier doivent correspondre exactement.
  • Vérifiez que vous spécifiez bien les paramètres requis par l'applet. Choisissez Fichier - Outils - Afficher console de débogage Java pour afficher les messages générés par l'applet Java. Vérifiez qu'aucun paramètre ne manque et ajoutez les paramètres requis.
  • Vérifiez que les applets utilisant les objets Domino (classes d'arrière-plan) sont exécutées avec la même version JVM que celle utilisée pour la création de la bibliothèque de classe d'arrière-plan (lsxbe). Par exemple, si une applet Java autonome utilise lsxbe.so de la version 6 de Domino, qui utilise JVM 1.3.1, l'applet autonome doit également être exécutée avec JVM 1.3.1. Les autres configurations ne sont pas prises en charge.

Accès aux fichiers de ressources

Les applets Java utilisent fréquemment des fichiers de ressources, notamment des fichiers image et audio. Les applets accèdent à ces fichiers de trois manières différentes :

  • En indiquant l'URL complète du fichier, par exemple, http://www.someplace.com/image.gif.
  • En utilisant la méthode getDocumentBase de la classe d'applet pour construire une URL relative à l'emplacement du document contenant l'applet.
  • En utilisant la méthode getCodeBase de la classe d'applet pour construire une URL relative à la base de code de l'applet, c'est-à-dire l'emplacement à partir duquel les fichiers ont été chargés.

En fonction de la méthode utilisée, Domino risque de ne pouvoir localiser les fichiers de ressources pour l'applet. La méthode getCodeBase est la plus fiable pour les fichiers de ressources. Si une applet ne trouve pas les fichiers de ressources, modifiez-la pour qu'elle utilise getCodeBase. Recompilez les fichiers et sélectionnez Applet Java - Actualiser pour replacer ces fichiers dans le document.

Spécification d'une URL complète

Votre applet recherche à l'adresse spécifiée tout fichier de ressources référencé par une URL complète, du type getImage("http://www.nomdesite.com/images", "image.gif"). Cette méthode est applicable si les applets sont exécutées sur un client Notes dans un document fourni par un serveur Domino et si vous avez correctement configuré l'accès du client Notes aux fichiers Internet.

De même, vous pouvez accéder à des images jointes à des documents Notes en spécifiant une URL Domino pour inclure un qualificateur "$FILE" - par exemple : getImage("http://www.nomdesite.com/base_doc.nsf/MasterView/862..12E/$FILE", "image.gif"). Comme mentionné ci-dessus, le client Notes doit avoir accès au serveur Domino pour qu'une applet exécutée sur un client Notes puisse accéder à ce fichier.

La spécification d'une URL complète pour accéder à un fichier de ressources d'applet présente toutefois des inconvénients : l'accès au fichier via Internet risque d'être lent et tous les clients Notes ne sont pas configurés pour accéder directement à Internet. Cela suppose également que l'emplacement du fichier n'est pas modifié. Si ces désavantages n'ont pas d'importance dans votre cas, cette méthode est fiable pour accéder aux fichiers de ressources.

Utilisation de getDocumentBase

La méthode getDocumentBase est la moins fiable pour spécifier les fichiers de ressources. Elle renvoie l'URL de base du document (URL complète du document moins le nom de fichier) contenant l'applet. Par exemple, si une applet est en cours d'exécution dans un document à l'adresse

http://www.nomdesite.com/test/exemple.html

la méthode getDocumentBase renvoie l'URL suivante

http://www.nomdesite.com/test

C'est la méthode employée par certaines applets pour spécifier une URL de fichiers de ressources - par exemple : getImage(getDocumentBase(), "image.gif"). Dans le cas de l'URL précédemment prise comme exemple, l'applet rechercherait le fichier image à l'adresse :

http://www.nomdesite.com/test/image.gif

Notez toutefois que l'URL Domino d'un document ne fait pas référence à un fichier uniquement ; elle constitue une commande envoyée au serveur Domino pour qu'il génère le code HTML représentant un document. Si vous utilisez la méthode getDocumentBase comme URL Domino, vous obtiendrez des résultats inattendus. Par exemple, si vous avez associé une applet à l'URL Domino suivante :

http://www.nomdesite.com/database.nsf/MasterView/862..12E?OpenDocument

Dans ce cas, l'utilisation de la méthode getDocumentBase en conjonction avec l'appel getImage renvoie

http://www.nomdesite.com/database.nsf/MasterView/image.gif

L'applet ne trouve pas le fichier car l'ID du document n'existe plus et l'image est une pièce jointe à un document, nécessitant la présence du qualificatif $File dans sa dénomination.

Puisque l'ID du document a disparu (et que l'image lui est jointe et requiert "$FILE" pour qualifier le nom du fichier), l'applet ne peut pas trouver l'image demandée.

Utilisation de getCodeBase

La méthode getCodeBase est la plus fiable pour spécifier un fichier de ressources. Elle renvoie l'URL de base à partir de laquelle l'applet a été chargée. La base de code pour une applet peut être spécifiée par l'attribut CODEBASE dans le marqueur APPLET. Lorsque Domino génère le code HTML pour une applet insérée dans un document Notes, il crée une URL complète pour l'attribut CODEBASE. Toujours dans l'exemple présenté ci-dessus, la méthode getCodeBase renverrait

http://www.nomdesite.com/database.nsf/MasterView/862..12E/$FILE

Utilisée en conjonction avec des appels de ressource tels que getImage, getCodeBase spécifie correctement le fichier de ressources. Par exemple :

getImage(getCodeBase(), "image.gif")

produit l'URL suivante si l'applet est exécutée par Domino :

http://www.nomdesite.com/database.nsf/MasterView/862..12E/$FILE/image.gif

L'URL obtenue permet à l'applet de trouver le fichier.

Modification des valeurs de paramètre pour localiser les fichiers de ressources

Certaines applets comportent des paramètres qui font référence à des fichiers de ressources ou à des répertoires contenant des fichiers de ressources. Une applet peut, par exemple, inclure un paramètre spécifiant un fichier à utiliser comme image d'arrière-plan ou un répertoire de fichiers audio. Vous devrez peut-être éditer l'applet pour que ses paramètres fassent référence à la base de code, et non à la base de documents.

Si vous ne générez pas l'applet vous-même, par exemple si vous vous connectez à une applet sur Internet, ou si vous avez obtenu un jeu de fichiers CLASS sans le code source, vous devrez éventuellement éditer une valeur de paramètre après avoir inséré l'applet dans un masque ou un document. Dans ce cas, faites précéder la valeur de paramètre de la chaîne "$notes_codebase".

Par exemple, au lieu de "images/image.gif", utilisez "$notes_codebase/images/image.gif" comme valeur de paramètre. Domino convertit les occurrences de la chaîne $notes_codebase en base de code pour l'applet. Domino convertit la valeur du paramètre "$notes_codebase/images/image.gif" en :

http://www.nomdesite.com/database.nsf/MasterView/862..12E/$FILE/images/image.gif

L'URL complète est spécifiée comme valeur de paramètre. La méthode getDocumentBase est supplantée, et l'applet est capable de trouver le fichier de ressources.