Les chargeurs de classe recherchent et chargent des
fichiers de classe. Pour qu'une application déployée s'exécute correctement, les chargeurs de classe qui affectent l'application et ses modules doivent être configurés de telle sorte que l'application puisse trouver les fichiers et les ressources dont elle a besoin. L'identification des incidents qui surviennent avec les chargeurs de classe peut être une opération longue et compliquée. Pour identifier et résoudre les incidents plus rapidement,
utilisez l'afficheur des chargeurs de classe de la console d'administration afin d'examiner
les chargeurs de classe et les classes chargées par chaque chargeur de classe.
Avant de commencer
Cette rubrique suppose que vous avez installé une application sur un serveur pris en
charge par le produit et que vous souhaitez examiner les chargeurs de classes utilisés par
l'application ou ses modules. Les modules peuvent être des modules Web (fichiers .war) ou des modules EJB (fichiers .jar). L'afficheur
des chargeurs de classe permet d'examiner les chargeurs de classe dans un environnement d'exécution.
Dans cette rubrique, il est également supposé que vous avez activé le service de l'afficheur des chargeurs de classe.
Cliquez sur , activez le service et redémarrez le serveur.
Pourquoi et quand exécuter cette tâche
L'environnement d'exécution de WebSphere
Application Server utilise les chargeurs de classe ci-dessous
pour rechercher et charger les nouvelles classes pour une application dans l'ordre
suivant :
- Les chargeurs de classe d'amorçage, d'extensions et de CLASSPATH
créés par la machine virtuelle Java.
- Chargeur de classe d'extensions WebSphere
- Un ou plusieurs chargeurs de classe de module d'application qui
chargent les éléments d'applications d'entreprise s'exécutant sur
le serveur.
- Aucun ou plusieurs chargeurs de classe de module Web

Chaque chargeur de classe est enfant du chargeur de classe précédent. En d'autres termes, les chargeurs de classe du module d'application
sont des enfants du chargeur de classe des extensions WebSphere,
lui-même enfant du chargeur de classe Java de CLASSPATH. Chaque fois qu'une classe doit être chargée, le chargeur de classe délègue la demande à son chargeur de classe parent. Si aucun des chargeurs de classe parent ne peut trouver la classe, le
chargeur de classe d'origine tente de la charger. Les demandes ne
peuvent être adressées qu'à un chargeur de classe parent ; elles ne
peuvent pas être envoyées à un chargeur de classe enfant. Dès qu'une classe est chargée par un chargeur de classe,
toute nouvelle classe qu'il tente de charger utilise le même
chargeur de classe ou parcourt la liste de priorités jusqu'à ce que
la classe soit trouvée.
Si les chargeurs de classe qui chargent les objets d'une
application ne sont pas configurés correctement, il se peut que la machine virtuelle
Java (JVM) lève une exception de chargement de classe lors du démarrage ou de l'exécution
de cette application. Exceptions de chargement de classes décrit les types d'exception pouvant être émis lorsqu'un chargeur
de classe n'est pas configuré correctement et propose d'utiliser l'afficheur des chargeurs
de classe pour corriger les configurations des chargeurs de classe. Les types d'exceptions sont les suivants :
Utilisez l'afficheur des chargeurs de classe pour examiner les chargeurs de classe et
corriger les incidents liés à la configuration des applications ou des chargeurs de classe.
Procédure
- Examinez l'arborescence qui répertorie toutes les applications installées et leurs modules. Il peut s'agir de modules Web (fichiers .war) ou de modules d'EJB (fichiers .jar).
Cliquez sur pour accéder à la page Topologie des applications d'entreprise.
- Examinez la hiérarchie de délégation des chargeurs de classe.
Dans la page Topologie des applications d'entreprise, sélectionnez un module pour accéder à la page Afficheur de chargeur de classe. Elle répertorie les chargeurs de classe visibles pour les modules Web et d'EJB dans une application d'entreprise installée. Elle permet de déterminer quels chargeurs de classe ont chargé des fichiers d'un module et de diagnostiquer les incidents liés aux chargeurs de classe.
La hiérarchie de délégation est déterminée par le mode de délégation du chargeur
de classe, ou Ordre du chargeur de classes, spécifié pour une application ou un module
Web. La valeur peut être Classes chargées en premier avec un chargeur de classes
parent ou Classes chargées en premier avec un chargeur de classe
local (dernier parent). Pour plus d'informations, reportez-vous à l'étape Configurer des chargeurs de classe.
- Exportez des informations sur les chargeurs de classe.
- Dans la page Afficheur des chargeurs de classe, cliquez sur Exporter.
- Ouvrez les informations du chargeur de classe dans un navigateur ou un éditeur ou enregistrez-les sur le disque au format XML.
- Cliquez sur OK et spécifiez toutes les informations supplémentaires requises par le système.
- Affichez les informations sur les chargeurs de classe que le module peut voir dans un tableau HTML.
Dans la page Afficheur des chargeurs de classe, cliquez sur Vue Table. La page Vue Table affiche les informations suivantes :
Tableau 1. Page Vue Table. Informations disponibles dans les attributs du chargeur de classe.Attribut du chargeur de classe |
Description |
Délégation |
Indique si le chargeur de classe délègue le chargement du module à son chargeur de classe parent. La valeur true implique que le chargeur de classe de
l'application parent est utilisé (Classes chargées en premier avec un chargeur
de classes parent). La valeur false implique
que le chargeur de classe du module est utilisé (Classes chargées en premier
avec un chargeur de classe local (dernier parent)). Pour plus d'informations, reportez-vous à l'étape Configurer des chargeurs de classe. |
Chemin de classe |
Répertorie les chemins d'accès dans lesquels le chargeur de classe recherche des classes et des ressources. |
Classes |
Répertorie les noms des classes chargées dans la JVM par ce chargeur de classe. |
L'option Vue Table ne renvoie pas de valeur lorsque des
erreurs de mémoire insuffisante sont générées. Les erreurs de mémoire insuffisante peuvent être liées à une fuite de mémoire. Pour examiner des informations relatives aux chargeurs de classe dans
un tableau, corrigez les erreurs de mémoire insuffisante, puis cliquez à nouveau sur
Vue Table.
- Recherchez les chargeurs de classe.
Dans la page Afficheur de chargeur
de classe, cliquez sur
Rechercher pour accéder à la
page Rechercher, sur laquelle vous pouvez
rechercher dans les chargeurs de classe les éléments suivants :
- chaînes spécifiques,
- fichiers .jar spécifiques,
- noms de fichiers dans un répertoire spécifique,
- noms de fichiers chargés par un chargeur de classe spécifique.
La recherche différencie les majuscules des minuscules.
Exceptions de chargement de classes décrit
plusieurs utilisations de la page Rechercher.
- Configurez les chargeurs de classe. Vous pouvez configurer les chargeurs de classe pour les éléments suivants :
La configuration des chargeurs de classe détermine le chargeur de classe qui charge les classes et les fichiers de ressources pour une application ou un module Web. Les paramètres de configuration
de chargeur de classe de module WAR et d'application incluent Ordre du chargeur
de classes et Règle du chargeur de classes WAR.
La valeur
du paramètre Ordre du chargeur de classes peut être Classes
chargées en premier avec un chargeur de classes parent ou Classes chargées
en premier avec un chargeur de classe local (dernier parent). La valeur par défaut est Classes
chargées en premier avec un chargeur de classes parent.
Un chargeur de classe dont le mode est Classes
chargées en premier avec un chargeur de classes parent délègue le chargement
d'une classe ou d'une ressource à son chargeur de classe parent immédiat avant d'effectuer
une recherche dans son chemin d'accès aux classes.
Lors du traitement des incidents liés au chargement d'une classe, il peut être nécessaire de remplacer les classes visibles d'un chargeur de classe parent. Pour
remplacer de telles classes par les classes spécifiques à une application, définissez
l'ordre du chargeur de classes sur Classes chargées en premier avec
un chargeur de classe local (dernier parent) dans le chargeur de classe qui contient les
classes de l'application dans son chemin d'accès aux classes. Une application peut remplacer des classes visibles d'un chargeur de classe parent, mais l'opération peut générer l'exception ClassCastException ou l'erreur UnsatisfiedLinkError si des classes remplacées et non remplacées sont utilisées simultanément.
Par exemple, selon les règles de chargeur de classe par défaut, un module Web utilise son propre chargeur de classe de module Web (WAR) pour charger ses artefacts, qui se trouvent généralement dans les répertoires WEB-INF/classes et WEB-INF/lib.
Le parent immédiat de ce chargeur de classe WAR est un chargeur de classe de module d'application. Pour
que le chargeur de classe de module Web recherche d'abord une classe ou une ressource particulière
à ces chemins avant de déléguer l'opération de chargement au chargeur de classe de module
d'application, définissez l'ordre du chargeur de classes du module
Web sur Classes chargées en premier avec un chargeur de classe local (dernier
parent).
Les règles de chargeur de classe déterminent la structure de l'application et les chargeurs de classe de module WAR. Selon les règles par défaut, chaque fichier EAR d'application exécuté possède son propre chargeur de classe de module d'application et chaque module Web possède son propre chargeur de classe de module WAR. Les règles par défaut
assurent la conformité Java EE pour la visibilité et l'isolement des artefacts
d'application. Il est déconseillé de modifier les règles par défaut lors du traitement des incidents liés au chargement d'une classe.
Que faire ensuite
Si les incidents liés aux chargeurs de classe persistent, voir Exceptions de chargement de classes et Chargement de classes.