L'istanza non si avvia | file log4j.jar in APP-INF/lib WebLogic

Problema

Stai eseguendo le tue istanze in WebLogic e hai log4j.jar sotto APP-INF/lib. Quando tenti di avviare l'istanza di pubblicazione (o la seconda istanza sullo stesso server delle applicazioni), ottieni un errore simile a:
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)

Soluzione

Esegui una delle seguenti operazioni:

  • Non inserire il log4j.jar nel classloader comune/condiviso. È una cattiva idea avere un log4j condiviso per tutte le applicazioni Web, dato che non usano le proprie categorie. Ad esempio, non è possibile sapere da quale applicazione Web proviene il messaggio di log.
  • Sposta i seguenti jar al classloader comune:
    • crx-commons.jar
    • crx-api.jar
    • jcr.jar
    • commons-logging.jar
    • commons-collections.jar
    • xercesImpl.jar

Informazioni aggiuntive

log4j è globale per tutte le classi dello stesso classloader. Una classe nella webapp autore registra il FmtLogger (in crx-commons.jar) come logger nella categoria log4j 'globale'. Poi, la classe di pubblicazione cerca di acquisire lo stesso logger. È presente un'eccezione del cast di classe, perché ha un'altra versione di FmtLogger nel suo classpath.

Logo Adobe

Accedi al tuo account