2010-08-11 13 views
5

Estoy intentando configurar hibernate 3.5.3 con JPA en glassfish 3.0.1;usando log4j con hibernate y glassfish 3.0.1

Estoy utilizando un proyecto empresarial netbeans 6.9.1; He añadido todos los archivos de hibernación y todo está bien, excepto el registro ...

he añadido a la ruta de clases proyecto como los documentos dicen lo siguiente (sólo el registro frascos relacionados en la lista):

-slf4j-API- 1.5.8.jar

-slf4j-log4j12-1.5.8.jar

-log4j-1.2.16.jar

-log4j.properties que se parece:

log4j.appender.stdout=org.apache.log4j.ConsoleAppender 
log4j.appender.stdout.Target=System.out 
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout 
log4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n 

log4j.rootLogger=info, stdout 

log4j.logger.org.hibernate.test=info 
log4j.logger.org.hibernate.tool.hbm2ddl=debug 

También activé la depuración usando -Dlog4j.debug propiedad de JVM.

Tan pronto como puedo implementar consigo esto en el registro del servidor:

SEVERE: log4j:ERROR A "org.apache.log4j.ConsoleAppender" object is not assignable to a "org.apache.log4j.Appender" variable. 
SEVERE: log4j:ERROR The class "org.apache.log4j.Appender" was loaded by 
SEVERE: log4j:ERROR [EarLibClassLoader : 
urlSet = [URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/antlr-2.7.6.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/commons-collections-3.1.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/dom4j-1.6.1.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/gwt-servlet.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/hibernate-jpa-2.0-api-1.0.0.Final.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/hibernate3.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/javassist-3.9.0.GA.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/jta-1.1.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/log4j-1.2.16.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/slf4j-api-1.5.8.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/slf4j-log4j12-1.5.8.jar] 
doneCalled = false 
Parent -> [email protected] 
] whereas object of type 
SEVERE: log4j:ERROR "org.apache.log4j.ConsoleAppender" was loaded by [EarLibClassLoader : 
urlSet = [URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/antlr-2.7.6.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/commons-collections-3.1.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/dom4j-1.6.1.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/gwt-servlet.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/hibernate-jpa-2.0-api-1.0.0.Final.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/hibernate3.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/javassist-3.9.0.GA.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/jta-1.1.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/log4j-1.2.16.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/slf4j-api-1.5.8.jar, URLEntry : file:/C:/Users/Bogdan/Documents/NetBeansProjects/GwtCms/dist/gfdeploy/GwtCms/lib/slf4j-log4j12-1.5.8.jar] 
doneCalled = false 
Parent -> [email protected] 
]. 
SEVERE: log4j:ERROR Could not instantiate appender named "stdout". 
SEVERE: log4j:WARN No appenders could be found for logger (org.hibernate.cfg.annotations.Version). 
SEVERE: log4j:WARN Please initialize the log4j system properly. 
SEVERE: log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info. 

Alguna idea sobre cómo puedo solucionar esto? ¡Gracias!

EDITAR

Me trataron de eliminar log4j de mi proyecto como Tushar Tarkas sugirió:

SEVERE: org/apache/log4j/Level 
java.lang.NoClassDefFoundError: org/apache/log4j/Level 
     at org.slf4j.LoggerFactory.getSingleton(LoggerFactory.java:223) 
     at org.slf4j.LoggerFactory.bind(LoggerFactory.java:120) 
     at org.slf4j.LoggerFactory.performInitialization(LoggerFactory.java:111) 
     at org.slf4j.LoggerFactory.getILoggerFactory(LoggerFactory.java:269) 

Edit2: SOLUCIÓN

no sé por qué, pero si copie el archivo log4j-1.2.16.jar en/domains/domain1/lib está funcionando.

Edit3:

Pascal, esto es lo despliega GF.

EnterpriseApplication1-ejb_jar > 
    .netbeans_automatic_build 
    .netbeans_update_resources 
    ejbs // classes for EJB 
    entities // classes for entities 
    log4j.properties 
    META-INF 
EnterpriseApplication1-war_war > 
    index.jsp 
    META-INF 
    WEB-INF 
META-INF 
lib > 
    antlr-2.7.6.jar 
    commons-collections-3.1.jar 
    dom4j-1.6.1.jar 
    hibernate-jpa-2.0-api-1.0.0.Final.jar 
    hibernate3.jar 
    javassist-3.9.0.GA.jar 
    jta-1.1.jar 
    log4j-1.2.16.jar 
    slf4j-api-1.5.8.jar 
    slf4j-log4j12-1.5.8.jar 
+0

La eliminación de log4j.jar ciertamente no es una solución. Pero me gustaría saber cómo lo empaqueta exactamente. –

+0

Pascal ver mi última edición :) – Bogdan

+0

De todos modos, he escrito un tutorial sobre la configuración de Hibernate + GF + NB. Todavía estoy interesado en una mejor forma de hacer que log4j funcione con GF3. El tutorial se puede encontrar aquí: http://bogdantanaseit.blogspot.com/2010/08/hibernate-jpa-20-on-glassfish-v3-with.html – Bogdan

Respuesta

2

Pude encontrar algunas discusiones relacionadas con problemas similares. El problema es con glassfish versión 3 y superior. Las clases parecen estar cargadas por diferentes cargadores de clases.

Verificar this.

+0

Gracias por la entrada. He revisado esa discusión, pero parece que no llegaron a una resolución. ¿Alguna idea de si puedo establecer "algo" en glassfish o log4j para arreglar esto? – Bogdan

+0

Intente eliminar el archivo jar de log4j del directorio lib de las aplicaciones. GlassFish ya tiene log4j que usa internamente. –

+0

No. Eso no funciona. Ver mi edición – Bogdan

0

Intente utilizar la carga de clases específica de la aplicación con Glassfish.

Coloque log4j.jar en [Glassfish-Install-Dir]. [RUTA-AL-DOMINIO]/lib/applibs. También puede hacer un nuevo directorio para mantener las cosas limpias: [Glassfish dir-instalación-] [path-to-DOMINIO]/lib/applibs/MY_APPLICATIONS_DEPENDENCIES

Después de haber hecho que tiene que especificar a cargar. log4j cuando implementa su aplicación. Hay dos opciones: 1. Consola de administración/interfaz web: complete la información para log4j en la opción liberators 2. Utilice el comando asadmin deploy con la opción ---- libraries y especifique las rutas separadas por comas. Para obtener detalles, consulte el Manual de referencia de Oracle GlassFish Server 3.1-3.1.1. (citado de Oracle GlassFish Server 3.1 Guía de desarrollo de aplicaciones)

+0

Ya no implementa log4j.jar con su aplicación. –

Cuestiones relacionadas