Chargement des classes du client d'application Java EE
Lorsque vous exécutez votre client d'application Java™ EE (Java Platform, Enterprise Edition), une hiérarchie de chargeurs de classe est créée pour charger les classes utilisées pour votre application.
- Le client d'application de l'environnement d'exécution de WebSphere Application Server (client d'application) définit cette valeur sur la variable d'environnement WAS_LOGGING.
Le chargeur de classe d'extensions est l'enfant du chargeur de classe d'amorce. Ce chargeur de classe contient regroupe des fichiers JAR qui se trouvent dans le répertoire java/jre/lib/ext ou ceux définis par le paramètre -Djava.ext.dirs de la commande Java. L'environnement d'exécution client du client d'application ne définit pas les paramètres -Djava.ext.dirs. Il est utilise donc les fichiers JAR du répertoire java/jre/lib/ext.
Le chargeur de classe d'extensions est l'enfant du chargeur de classe d'amorce. Ce chargeur de classe contient des fichiers JAR dans le répertoire racine_serveur_applications/java/ext, le répertoire java_home/lib/ext ou java_home/jre/lib/ext et le répertoire /QIBM/UserData/Java400/ext. Le répertoire racine_serveur_applications correspond au chemin d'installation du produit. Le répertoire java_home correspond au chemin d'installation de vos fichiers Java.
Avertissement : Trois valeurs sont possibles pour le paramètre java_home, en fonction de la machine virtuelle Java activée. Ces trois valeurs possibles sont :
- /QOpenSys/QIBM/ProdData/JavaVM/jdk60/32bit (Java SE 6, 32 bits)
- /QOpenSys/QIBM/ProdData/JavaVM/jdk60/64bit (Java SE 6, 64 bits)
- Le chargeur de classe système contient les classes et les fichiers JAR définis par le paramètre -classpath de la commande Java. L'environnement d'exécution du client d'application attribue à ce paramètre la valeur de la variable d'environnement WAS_CLASSPATH.
- Le chargeur de classe WebSphere charge l'environnement d'exécution du client d'application et toutes les classes placées dans les répertoires utilisateur de ce dernier. Les répertoires utilisés par ce chargeur de classes sont définis par la variable d'environnement WAS_EXT_DIRS. Les variables d'environnement WAS_BOOTCLASSPATH, WAS_CLASSPATH et WAS_EXT_DIRS sont définies dans le script racine_serveur_applications/bin/setupCmdLine pour les installations WebSphere Application Server ou dans le script racine_serveur_applications/bin/setupClient pour les installations du client.
Lors de l'initialisation de l'environnement d'exécution du client d'application Java EE, des chargeurs de classe supplémentaires sont créés en tant qu'enfants du chargeur de classe WebSphere. Si votre application client utilise des ressources telles que l'API JDBC (Java DataBase Connectivity), l'API JMS (Java Message Service ou l'URL (Uniform Resource Locator), un autre chargeur de classe est créé pour charger chacune de ces ressources. Enfin, l'environnement d'exécution du client d'application configure le chargeur de classe WebSphere de sorte qu'il charge les classes contenues dans le fichier EAR en traitant de manière itérative le manifeste du fichier JAR du client. Le chemin de classes système défini par la variable d'environnement CLASSPATH n'est jamais utilisé et ne fait pas partie de la hiérarchie des chargeurs de classes.
Pour conditionner correctement votre application client, vous devez comprendre quels chargeurs assurent le chargement de vos classes. Lorsque le code Java charge une classe, le chargeur de classe utilisé à cet effet est affecté à cette classe. Toute autre classe chargée ensuite par cette classe utilisera ce même chargeur ou l'un de ses parents, mais elle n'utilisera pas les chargeurs enfant.
WSCL0205W : Un programme de chargement des classes incorrect a été utilisé pour charger [0]Ce message s'affiche lorsque la classe de votre application client est chargée par l'un des chargeurs parent de la hiérarchie. Cette situation se rencontre généralement lorsque les mêmes classes figurent à la fois dans le fichier EAR et sur le disque dur. Si l'un des chargeurs parent localise une classe, il la charge avant le chargeur de classes de l'environnement d'exécution du client d'application. Dans certains cas, votre application client fonctionnera quand même correctement. Toutefois, dans la plupart des cas, vous recevrez des exceptions de type "class not found" (classe introuvable).
Configuration des zones de chemin d'accès aux classes
Lors du conditionnement de votre application client Java EE, vous devez configurer plusieurs zones de chemin d'accès aux classes. L'idéal est de regrouper dans le fichier EAR tout ce dont l'application a besoin. Il s'agit du moyen le plus simple de distribuer votre application client Java EE à vos clients. Cependant, vous ne devez pas inclure dans le fichier .ear des ressources telles que JDBC, JMS ou des URL. Pour ces ressources, il convient d'utiliser des références de type chemin d'accès aux classes afin d'accéder aux classes correspondantes sur le disque dur. Il se peut que d'autres classes utilisées par votre application client soient également installées sur les machines client et que vous ne souhaitiez pas les redistribuer. Dans ce cas, il convient également d'utiliser des références de type chemin d'accès aux classes pour accéder aux classes sur le disque dur, comme cela est expliqué dans la rubrique ci-après.
Référencement des classes dans le fichier EAR
- Les valeurs doivent désigner les fichiers classe et les fichiers JAR contenus dans le fichier EAR.
- Les valeurs doivent être relatives à la racine du fichier EAR.
- Les valeurs ne doivent pas désigner des chemins absolus dans le système de fichiers.
- Lorsque plusieurs valeurs sont spécifiées, elles doivent être séparées par des espaces, et non par des signes deux-points ou des points-virgules.
Généralement, on ajoute les modules (fichiers JAR) à la racine du fichier EAR. Dans ce cas, vous avez seulement besoin de spécifier le nom du module (fichier JAR) dans la zone du chemin d'accès aux classes. Si vous choisissez d'ajouter un module avec un chemin, vous devez spécifier ce chemin par rapport à la racine du fichier EAR.
Pour référencer des fichiers classe, vous devez spécifier le répertoire par rapport à la racine du fichier EAR. Vous pouvez ajouter des fichiers classe au fichier EAR à l'aide d'un outil d'assemblage. Il est recommandé de les regrouper dans un fichier JAR. Vous devez ajouter ce fichier JAR dans les zones de chemin d'accès aux classes du module. Si vous ajoutez des fichiers classe à la racine du fichier EAR, ajoutez ./ dans les zones de chemin d'accès aux classes du module.
A titre d'exemple, étudions l'arborescence de répertoires suivante, dans laquelle le fichier myapp.ear contient un fichier JAR de client d'application appelé myclient.jar et un module EJB appelé mybeans.jar. Des classes supplémentaires se trouvent dans les fichiers class1.jar et utility/class2.zip. Le fichier classe nommé xyz.class n'est pas contenu dans un fichier JAR mais se trouve bien à la racine du fichier EAR. Spécifiez ./mybeans.jar utility/class2.zip class1.jar comme valeur de la propriété Chemin d'accès aux classes. L'ordre de recherche est : myapp.ear/myclient.jar myapp.ear/xyz.class myapp.ear/mybeans.jar myapp.ear/utility/class2.zip myapp.ear/class1.jar
Référencement de classes non contenues dans le fichier EAR
Utilisez le paramètre launchClient -CCclasspath. Ce paramètre est spécifié au moment de l'exécution ; il reçoit pour valeur une série de chemins de classes séparés les uns des autres par des points-virgules ou des signes deux-points, selon la plateforme. De ce point de vue, le client et le serveur sont similaires.
Chemins des classes des ressources
Lorsque vous configurez les ressources utilisées par votre application client
à l'aide de l'outil de configuration des ressources du client d'application (ACRCT) ou de l'outil de scriptage z/OS ACRCT, vous pouvez indiquer les chemins d'accès aux classes requis par la ressource. Par exemple,
si votre application utilise JDBC pour accéder à une base de données DB2, ajoutez db2java.zip
à la zone de chemin d'accès aux classes du fournisseur de base de données. Les valeurs de
chemin d'accès doivent
être spécifiées conformément au format de la plateforme utilisée, ce qui signifie
qu'elles doivent être séparées, selon le cas, par des points-virgules
ou des signes deux-points.
Sur WebSphere Application Server for i5/OS, si vous utilisez le fournisseur JDBC d'IBM® Developer Kit for Java pour accéder à DB2/400, il n'est pas nécessaire d'ajouter le fichier db2_classes.jar au chemin d'accès aux classes. Néanmoins, si vous utilisez le fournisseur JDBC d'IBM Toolbox for Java, indiquez l'emplacement du fichier jt400.jar.
Utilisation de l'API launchClient
Si vous utilisez la commande launchClient, la hiérarchie de chargeurs de classe WebSphere est créée pour vous. Cependant, si vous utilisez directement l'API de launchClient, il vous revient de créer vous-même cette hiérarchie. Définissez les propriétés système Java en reproduisant ce que fait la commande shell launchClient.