Problème

Vous exécutez les instances de WebLogic et vous avez log4j.jar sous APP-INF/lib. Lorsque vous essayez de démarrer votre instance de publication (ou la deuxième instance sur le même appserver), vous obtenez une erreur semblable à :
javax.servlet.ServletException at weblogic.servlet.internal.ServletStubImpl.createServlet(ServletStubImpl.java:909) at weblogic.servlet.internal.ServletStubImpl.createInstances(ServletStubImpl.java:873) at weblogic.servlet.internal.ServletStubImpl.prepareServlet(ServletStubImpl.java:812) at weblogic.servlet.internal.WebAppServletContext.preloadServlet(WebAppServletContext.java:3281) at weblogic.servlet.internal.WebAppServletContext.preloadServlets(WebAppServletContext.java:3226) at weblogic.servlet.internal.WebAppServletContext.preloadResources(WebAppServletContext.java:3207) at weblogic.servlet.internal.WebAppServletContext.setStarted(WebAppServletContext.java:5737)

Solution

Effectuez l’une des opérations suivantes :

  • Désactivez le log4j.jar dans le classloader commun/partagé. Disposer d'un log4j partagé pour toutes les applications web est une mauvaise idée, car elles n'utilisent pas leurs propres catégories. Par exemple, vous ne pouvez pas déterminer de quelle application web provient le message du journal.
  • Déplacez les jars suivant vers le classloader commun :
    • crx-commons.jar
    • crx-api.jar
    • jcr.jar
    • commons-logging.jar
    • commons-collections.jar
    • xercesImpl.jar

Informations supplémentaires

log4j est global pour l'ensemble des classes du même classloader. Une classe dans l'application web auteur enregistre le FmtLogger (dans crx-commons.jar) en tant que journal dans la catégorie log4j « global » La classe de publication tente ensuite d’acquérir le même journal. Il existe une exception de distribution de classe, car elle possède une autre version de FmtLogger dans son chemin de classe.

Ce produit est distribué sous licence Creative Commons Attribution - Pas d’utilisation commerciale - Partage à l’identique 3.0 non transposé  Les publications Twitter™ et Facebook ne sont pas couvertes par les dispositions Creative Commons.

Mentions légales   |   Politique de confidentialité en ligne