2010-08-11 6 views
5

Sto provando a installare Hibernate 3.5.3 con JPA su glassfish 3.0.1;utilizzando log4j con hibernate e glassfish 3.0.1

Sto utilizzando un progetto enterprise netbeans 6.9.1; Ho aggiunto tutti i file d'ibernazione e tutto è bene, tranne la registrazione ...

ho aggiunto al progetto classpath come i documenti dicono che il seguente (barattoli legati solo il registro elencati):

-slf4j-API- 1.5.8.jar

-slf4j-log4j12-1.5.8.jar

-log4j-1.2.16.jar

-log4j.properties che si presenta come:

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 

Ho anche attivato il debug utilizzando la proprietà JVM -Dlog4j.debug.

Appena mi schiero ottengo questo nel registro del server:

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. 

Tutte le idee su come posso risolvere questo problema? Grazie!

EDIT

ho cercato di togliere log4j dal mio progetto come Tushar Tarkas suggerito:

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: SOLUZIONE

non so perché, ma se io copia il file log4j-1.2.16.jar in/domains/domain1/lib sta funzionando.

Edit3:

Pascal, ecco cosa distribuisce 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 rimozione di log4j.jar non è certamente una soluzione. Ma mi piacerebbe sapere come lo impacchettate esattamente. –

+0

Pascal vedere la mia ultima modifica :) – Bogdan

+0

In ogni caso, ho scritto un tutorial sulla configurazione di Hibernate + GF + NB. Sono ancora interessato a un modo migliore per far funzionare log4j con GF3. Il tutorial può essere trovato qui: http://bogdantanaseit.blogspot.com/2010/08/hibernate-jpa-20-on-glassfish-v3-with.html – Bogdan

risposta

2

Sono riuscito a trovare alcune discussioni relative a problemi simili. Il problema è con glassfish versione 3 e successive. Le classi sembrano essere caricate da diversi caricatori di classe.

Controllare this.

+0

Grazie per l'input. Ho esaminato quella discussione ma non sembravano arrivare a una soluzione. Qualche idea se posso impostare "qualcosa" in glassfish o log4j per risolvere questo problema? – Bogdan

+0

Provare a rimuovere il file jar di log4j dalla directory lib delle applicazioni. GlassFish ha già log4j che usa internamente. –

+0

No. Questo non funziona. Vedi la mia modifica. – Bogdan

0

Prova a utilizzare il caricamento di classi specifico dell'applicazione con Glassfish.

Inserire log4j.jar in [Glassfish-Install-Dir]. [PATH-TO-DOMAIN]/lib/applibs. Si può anche fare una nuova directory per mantenere le cose pulite: [Glassfish-install-dir] [path-to-DOMINIO]/lib/applibs/MY_APPLICATIONS_DEPENDENCIES

Dopo aver fatto che è necessario specificare per caricare. log4j quando si distribuisce l'applicazione. Sono disponibili due opzioni: 1. Console di amministrazione/interfaccia Web: immettere le informazioni per log4j nell'opzione liberaries 2. Utilizzare il comando asadmin deploy con l'opzione ---- libraries e specificare i percorsi separati da virgole. Per i dettagli, consultare il Manuale di riferimento di Oracle GlassFish Server 3.1-3.1.1. (citato da Oracle GlassFish Server 3.1 Guida allo sviluppo dell'applicazione)

+0

Non si distribuisce più log4j.jar con l'applicazione. –