2010-08-11 32 views
5

Ich versuche Hibernate 3.5.3 mit JPA auf Glassfish 3.0.1;mit Log4j mit Hibernate und Glassfish 3.0.1

Ich benutze ein netbeans 6.9.1 Enterprise-Projekt; Ich habe alle erforderlichen Hibernate-Dateien und alles ist in Ordnung, außer der Anmeldung ...

ich zu dem Projekt Classpath hinzugefügt wie die Dokumentation der folgenden (nur das Protokoll im Zusammenhang Gläser aufgelistet) sagen:

-slf4j-API- 1.5.8.jar

-slf4j-log4j12-1.5.8.jar

-log4j-1.2.16.jar

-log4j.properties, die wie folgt aussieht:

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 

Ich aktiviert Debug auch mit -Dlog4j.debug JVM-Eigenschaft.

Sobald ich stelle ich bekommen diese im Serverprotokoll:

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. 

Alle Ideen, wie kann ich dieses Problem beheben? Vielen Dank!

EDIT

Ich habe versucht, log4j von meinem Projekt zu entfernen, wie Tushar Tarkas vorgeschlagen:

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

Ich weiß nicht, warum, aber wenn ich kopiere log4j-1.2.16.jar Datei in/domains/domain1/lib es funktioniert.

EDIT3:

Pascal, hier ist was GF setzt.

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

Das Entfernen von log4j.jar ist sicherlich keine Lösung. Aber ich würde gerne wissen, wie Sie es genau verpacken. –

+0

Pascal sehe meine letzte Bearbeitung :) – Bogdan

+0

Wie auch immer, ich habe ein Tutorial über die Einrichtung Hibernate + GF + NB geschrieben. Ich bin immer noch an einer besseren Möglichkeit interessiert, log4j mit GF3 zu arbeiten. Das Tutorial kann hier gefunden werden: http://bogdantanaseit.blogspot.com/2010/08/hibernate-jpa-20-on-glassfish-v3-with.html – Bogdan

Antwort

2

Ich könnte einige Diskussionen zu ähnlichen Problem finden. Das Problem ist mit Glassfish Version 3 und höher. Die Klassen scheinen von verschiedenen Klassenladern geladen zu werden.

Überprüfen Sie this.

+0

Danke für die Eingabe. Ich habe diese Diskussion durchgesehen, aber sie schienen keine Lösung zu finden. Irgendeine Idee, wenn ich "etwas" in Glassfish oder log4j setzen kann, um das zu beheben? – Bogdan

+0

Versuchen Sie, die JAR-Datei von log4j aus dem Verzeichnis mit den Anwendungsbibliotheken zu entfernen. GlassFish hat log4j bereits intern verwendet. –

+0

Nein. Das funktioniert nicht. Siehe meine Bearbeitung. – Bogdan

0

Versuchen Sie das anwendungsspezifische Classloading mit Glassfish zu verwenden.

Platzieren Sie log4j.jar in [Glassfish-Installationsverzeichnis]. [PATH-TO-DOMAIN]/lib/applibs. Sie können auch ein neues Verzeichnis machen, um die Dinge sauber zu halten: [Glassfish-Install-Dir] [PATH-TO-DOMAIN]/lib/applibs/MY_APPLICATIONS_DEPENDENCIES

Nachdem Sie das getan haben, Sie angeben müssen, laden. log4j, wenn Sie Ihre Anwendung bereitstellen. Es gibt zwei Optionen: 1. Admin-Konsole/Web-Schnittstelle: Geben Sie die Informationen für log4j in der Option labiles ein 2. Verwenden Sie den Befehl asadmin deploy mit der Option ---- libraries und geben Sie Komma-getrennte Pfade an. Einzelheiten finden Sie im Oracle GlassFish Server 3.1-3.1.1 Referenzhandbuch. (zitiert von Oracle GlassFish Server 3.1 Anwendungsentwicklungshandbuch)

+0

Sie log4j.jar nicht mehr mit Ihrer Anwendung bereitstellen. –

Verwandte Themen