Zuletzt aktualisiert am
|
Gilt auch für Communiqué 3, Communiqué 4
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.
Bei Ihrem Konto anmelden