2010-08-11 74 views
5

我想在glassfish 3.0.1上使用JPA安裝休眠3.5.3;使用log4j休眠和glassfish 3.0.1

我正在使用netbeans 6.9.1企業項目;我添加了所有必需的Hibernate文件,一切都只是記錄罰款...

我加入到項目的類路徑,如文檔說以下(僅日誌相關的罐子中列出):

-slf4j-API - 1.5.8.jar

-slf4j-log4j12-1.5.8.jar

-log4j-1.2.16.jar

-log4j.properties它看起來像:

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 

我還使用-Dlog4j.debug JVM屬性來激活調試。

當我部署我得到這個服務器日誌:

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. 

關於如何解決這個任何想法?謝謝!

編輯

我想從我的項目中移除的log4j作爲圖莎爾Tarkas建議:

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

我不知道爲什麼,但如果我複製/ domains/domain1/lib中的log4j-1.2.16.jar文件。

EDIT3:

帕斯卡,這裏就是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

刪除log4j.jar當然不是解決方案。但我想知道你是如何精確包裝的。 – 2010-08-11 23:05:52

+0

帕斯卡見我最後的編輯:) – Bogdan 2010-08-12 06:55:42

+0

無論如何,我已經寫了一篇關於設置Hibernate + GF + NB的教程。我仍然對使log4j與GF3一起工作的更好方法感興趣。該教程可以在這裏找到:http://bogdantanaseit.blogspot.com/2010/08/hibernate-jpa-20-on-glassfish-v3-with.html – Bogdan 2010-08-12 18:58:34

回答

2

我可以找到一些有關類似問題的討論。問題在於glassfish版本3及以上。這些類似乎由不同的類加載器加載。

檢查this

+0

感謝您的意見。我已經看過這個討論,但他們似乎沒有得到一個解決方案。任何想法,如果我可以在glassfish或log4j中設置「某些東西」來解決這個問題? – Bogdan 2010-08-11 19:42:58

+0

嘗試從應用程序li​​b目錄中刪除log4j的jar文件。 GlassFish已經有了內部使用的log4j。 – 2010-08-11 19:59:05

+0

沒有。這是行不通的。看我的編輯。 – Bogdan 2010-08-11 20:10:45

0

嘗試在GlassFish中使用特定於應用程序的類加載。

將log4j.jar放入 [Glassfish-Install-Dir]。[PATH-TO-DOMAIN]/lib/applibs。 你也可以做一個新的目錄,以保持乾淨的東西: [Glassfish的安裝目錄] [PATH-TO-DOMAIN]/lib目錄/ applibs/MY_APPLICATIONS_DEPENDENCIES

你做了之後,你必須指定加載。 log4j當你部署你的應用程序。 有兩種選擇:1。 管理控制檯/ web界面:填寫信息的log4j的選項liberaries 2.使用asadmin與部署命令----庫選項,並指定用逗號分隔的路徑。有關詳細信息,請參閱Oracle GlassFish Server 3.1-3.1.1參考手冊。 (引自Oracle GlassFish Server 3。1應用程序開發指南)

+0

你不再在應用程序中部署log4j.jar。 – 2013-10-17 17:02:45