Instanz startet nicht | log4j.jar Datei in der WebLogic APP-INF/lib

Problem

Sie führen Ihre Instanzen in WebLogic aus und haben log4j.jar unter APP-INF/lib. Wenn Sie versuchen, Ihre Publishing-Instanz (oder die zweite Instanz auf dem gleichen Appserver) zu starten, erhalten Sie eine Fehlermeldung ähnlich wie:
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)

Lösung

Führen Sie einen der folgenden Schritte aus:

  • Die Datei log4j.jar nicht in den Common/Shared Classloader einfügen. Ein gemeinsames log4j für alle Webanwendungen ist nicht empfehlenswert, da diese keine eigenen Kategorien verwenden. Sie können z.B. nicht erkennen, von welcher Webapp die Logmeldung stammt.
  • Verschieben Sie die folgenden jars in den gemeinsamen Classloader:
    • crx-commons.jar
    • crx-api.jar
    • jcr.jar
    • commons-logging.jar
    • commons-collections.jar
    • xercesImpl.jar

Weitere Informationen

log4j ist global für alle Klassen im selben Classloader. Eine Klasse in der Author-Webapp registriert den FmtLogger (in crx-commons.jar) als Logger in der Kategorie'global' log4j. Dann versucht die Publish-Klasse, den gleichen Logger zu nutzen. Es gibt eine Class-Cast-Exception, da sie eine andere Version des FmtLoggers in ihrem Klassenpfad hat.

Adobe-Logo

Bei Ihrem Konto anmelden