использование log4j с hibernate и glassfish 3.0.1 - PullRequest
5 голосов
/ 11 августа 2010

Я пытаюсь настроить hibernate 3.5.3 с JPA на glassfish 3.0.1;

Я использую корпоративный проект netbeans 6.9.1; Я добавил все необходимые файлы гибернации, и все в порядке, кроме ведения журнала ...

Я добавил в путь к классам проекта, как указано в документации (только перечисленные файлы, связанные с журналом):

-slf4j-апи-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 -> org.glassfish.internal.api.DelegatingClassLoader@10ab6fa
] 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 -> org.glassfish.internal.api.DelegatingClassLoader@91cd46
].
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.

Есть идеи, как мне это исправить? Спасибо!

EDIT

Я попытался удалить log4j из своего проекта, как предложил Тушар Таркас:

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)

РЕДАКТИРОВАТЬ 2: РЕШЕНИЕ

Я не знаю почему, но если я скопирую файл log4j-1.2.16.jar в / domains / domain1 / lib, он будет работать.

РЕДАКТИРОВАТЬ3:

Паскаль, вот что 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

Ответы [ 2 ]

2 голосов
/ 11 августа 2010

Я мог бы найти некоторые обсуждения, связанные с похожей проблемой. Проблема с Glassfish версии 3 и выше. Кажется, что классы загружаются разными загрузчиками классов.

Проверьте это .

0 голосов
/ 17 октября 2013

Попробуйте использовать загрузку классов для конкретного приложения с Glassfish.

Поместите log4j.jar в [Glassfish-Install-Dir]. [ПУТЬ-TO-домен] / Библиотека / applibs. Вы также можете создать новый каталог, чтобы держать вещи в чистоте: [Glassfish-Install-Dir]. [ПУТЬ-ТО-ДОМЕН] / Библиотека / applibs / MY_APPLICATIONS_DEPENDENCIES

После того, как вы это сделали, вы должны указать загрузку log4j при развертывании приложения. Есть два варианта: 1. Консоль администратора / веб-интерфейс: введите информацию для log4j в опции Libraries 2. Используйте команду развертывания asadmin с параметром ---- library и укажите пути через запятую. Подробнее см. Справочное руководство по серверу Oracle GlassFish 3.1-3.1.1. (цитируется в Руководстве по разработке приложений Oracle GlassFish Server 3.1)

...