Fourniture de bibliothèques globales à l'usage de toutes les applications Java EE

Vous pouvez fournir des bibliothèques globales qui peuvent être utilisées par n'importe quelle application Java™ EE. Il suffit pour cela de placer les fichiers JAR de ces bibliothèques dans un répertoire spécifique et de déclarer l'utilisation des bibliothèques globales dans la configuration du chargeur de classe de chaque application. Toutefois, les bibliothèques globales ne peuvent pas être utilisées par d'autres applications, par exemple les applications OSGi.

Pourquoi et quand exécuter cette tâche

Dans le répertoire utilisateur spécifié par la variable WLP_USER_DIR, les emplacements dans lesquels vous pouvez placer votre bibliothèques globales sont les suivants :
  • ${shared.config.dir}/lib/global
  • ${server.config.dir}/lib/global
Si ces emplacements contiennent des fichiers au moment où une application démarre, et si cette application ne comporte pas d'élément <classloader> dans sa configuration, elle utilise ces bibliothèques. Si l'application comporte un chargeur de classe dans sa configuration, elle n'utilise pas ces bibliothèques globales, sauf si elles sont explicitement référencées.
Avertissement : Dès lors que vous utilisez des bibliothèques globales, vous avez tout intérêt à configurer un élément <classloader> pour chacune de vos applications. La spécification Servlet impose aux applications de partager le même chargeur de classe de bibliothèque globale dans la hiérarchie (ou chaîne de parenté) des chargeurs de classe qui les précède. Cela revient à se priver de la possibilité de configurer différemment le chargement des classes de chaque application. Ainsi, les applications sont plus susceptibles d'avoir des effets durables sur les classes chargées dans Liberty ainsi que les unes sur les autres ; le risque de problèmes de cohérence d'espace occupé par les classes entre applications est plus élevé et tend à s'aggraver au fil du temps, à mesure que des fonctions sont ajoutées et retirées sur un serveur en cours d'exécution. Ces risques n'existent pas pour les applications qui ont un élément <classloader> dans leur configuration, car la séparation des comportements de chargement des classes est alors préservée.

Exemple

Dans l'exemple ci-après, une application nommée Scholar est configurée pour utiliser d'une part une bibliothèque commune appelée Alexandria, d'autre part la bibliothèque 'global'.

Dans le fichier server.xml ou dans un fichier inclus par celui-ci, activez l'utilisation de la bibliothèque 'global' par l'application en ajoutant le code suivant :
<application id="" name="Scholar" type="ear" location="scholar.ear">
  <classloader apiTypeVisibility="spec" commonLibraryRef="Alexandria, global" />
</application>
La bibliothèque globale peut aussi être désignée explicitement dans la configuration, au moyen d'un élément library ayant l'ID spécial global. Exemple :
<library id="global">
  <fileset dir="/path/to/folder" includes="*.jar" />
</library>

Icône indiquant le type de rubrique Rubrique Tâche

Nom du fichier : twlp_classloader_global_libs.html