2010-08-11 29 views
5

Tôi đang cố gắng thiết lập ngủ đông 3.5.3 với JPA trên glassfish 3.0.1;sử dụng log4j với hibernate và glassfish 3.0.1

Tôi đang sử dụng dự án doanh nghiệp thuần tuý 6.9.1; Tôi thêm vào tất cả các tập tin ngủ đông yêu cầu và mọi thứ đều tốt trừ đăng nhập ...

tôi thêm vào classpath dự án như các tài liệu nói như sau (chỉ ghi lọ liên quan được liệt kê):

-slf4j-api- 1.5.8.jar

-slf4j-log4j12-1.5.8.jar

-log4j-1.2.16.jar

-log4j.properties trông giống như:

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 

Tôi cũng đã kích hoạt gỡ lỗi bằng cách sử dụng thuộc tính JVM -Dlog4j.debug.

Ngay sau khi tôi triển khai tôi có được điều này trong nhật ký máy chủ:

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. 

Bất kỳ ý tưởng về làm thế nào để sửa lỗi này? Cảm ơn bạn!

EDIT

tôi đã cố gắng để loại bỏ log4j từ dự án của tôi như Tushar Tarkas gợi ý:

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: GIẢI PHÁP

Tôi không biết tại sao, nhưng nếu tôi sao chép tập tin log4j-1.2.16.jar trong/domains/domain1/lib nó hoạt động.

EDIT3:

Pascal, đây là những gì GF triển khai.

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

Xóa log4j.jar chắc chắn không phải là giải pháp. Nhưng tôi muốn biết làm thế nào bạn gói nó chính xác. –

+0

Pascal xem chỉnh sửa cuối cùng của tôi :) – Bogdan

+0

Dù sao, tôi đã viết một hướng dẫn về thiết lập Hibernate + GF + NB. Tôi vẫn quan tâm đến một cách tốt hơn để làm việc log4j với GF3. Bạn có thể tìm thấy hướng dẫn tại đây: http://bogdantanaseit.blogspot.com/2010/08/hibernate-jpa-20-on-glassfish-v3-with.html – Bogdan

Trả lời

2

Tôi có thể tìm thấy một số cuộc thảo luận liên quan đến vấn đề tương tự. Vấn đề là với glassfish phiên bản 3 trở lên. Các lớp dường như được nạp bởi các trình nạp lớp khác nhau.

Kiểm tra this.

+0

Cảm ơn bạn đã nhập. Tôi đã xem qua cuộc thảo luận đó nhưng dường như họ không đạt được giải pháp. Bất kỳ ý tưởng nếu tôi có thể thiết lập "một cái gì đó" trong glassfish hoặc log4j để sửa lỗi này? – Bogdan

+0

Thử xóa tệp jar của log4j khỏi thư mục lib của ứng dụng của bạn. GlassFish đã có log4j mà nó sử dụng trong nội bộ. –

+0

Không. Điều đó không hiệu quả. Xem chỉnh sửa của tôi. – Bogdan

0

Hãy thử sử dụng tính năng tải lớp theo ứng dụng cụ thể với Glassfish.

Đặt log4j.jar vào [Glassfish-Install-Dir]. [PATH-TO-DOMAIN]/lib/applibs. Bạn cũng có thể tạo ra một thư mục mới để giữ cho mọi thứ sạch sẽ: [Glassfish-Install-Dir] [path-to-DOMAIN]/lib/applibs/MY_APPLICATIONS_DEPENDENCIES

Sau khi bạn đã làm điều đó, bạn phải chỉ định để tải. log4j khi bạn triển khai ứng dụng của mình. Có hai tùy chọn: 1. Bảng điều khiển dành cho quản trị viên/giao diện web: điền thông tin cho log4j trong tùy chọn tự do 2. Sử dụng lệnh triển khai asadmin với tùy chọn ---- thư viện và chỉ định đường dẫn được phân tách bằng dấu phẩy. Để biết chi tiết, xem Hướng dẫn tham khảo Oracle GlassFish Server 3.1-3.1.1. (được trích dẫn từ Oracle GlassFish Server 3.1 Hướng dẫn phát triển ứng dụng)

+0

Bạn không còn triển khai log4j.jar bằng ứng dụng của mình nữa. –

Các vấn đề liên quan