Java ServiceLoader avec plusieurs chargeurs de classes

Quelles sont les meilleures pratiques pour l'utilisation de ServiceLoader dans un Environnement avec plusieurs chargeurs de classes? La documentation recommande de créer et d'enregistrer une seule instance du service au moment de l'initialisation:

private static ServiceLoader<CodecSet> codecSetLoader = ServiceLoader.load(CodecSet.class);

Ce serait initialiser le ServiceLoader en utilisant le contexte actuel du chargeur de classe. Supposons maintenant que cet extrait est contenue dans une classe chargée partagé un chargeur de classe dans un conteneur web et plusieurs applications web souhaitez définir leurs propres implémentations de service. Ce ne serait pas obtenir ramassé dans le code ci-dessus, il pourrait même être possible que le chargeur est initialisé à l'aide de la première webapps contexte du chargeur de classe et de fournir la mauvaise mise en œuvre à d'autres utilisateurs.

Toujours la création d'une nouvelle ServiceLoader semble un gaspillage de performance sage, car il a d'énumérer et d'analyser les fichiers de service à chaque fois. Edit: Cela peut même être un gros problème de performance comme indiqué dans cette réponse au sujet de java XPath mise en œuvre.

Comment d'autres bibliothèques de gérer cela? Ils ne le cache de la mise en œuvre par des chargeurs de classes, font-ils d'analyse de leur configuration, à chaque fois, ou ont-ils simplement ignorer ce problème et ne fonctionne que pour un chargeur de classe?