2012-01-28 28 views
12

Tôi gặp vấn đề với một ứng dụng grails mà tôi đang làm việc và tôi không thể tìm ra nó. Đó là một ứng dụng grails 2.0 sẽ chạy trên Debian ổn định với Tomcat7. Vì vậy, tôi đã xây dựng tệp chiến tranh và triển khai nó cho Tomcat. Ngay sau khi tôi bắt đầu nó, tôi nhận được dữ liệu ghi nhận sau trong logfile Tomcat (catalina.out):"SEVERE: Error listenerStart" khi cố gắng khởi động Grails App trong Tomcat

SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". 
SLF4J: Defaulting to no-operation (NOP) logger implementation 
SLF4J: See http://www.slf4j.org/codes.html#StaticLoggerBinder for further details. 
28-Jan-2012 13:02:00 org.apache.catalina.core.StandardContext start 
SEVERE: Error listenerStart 
28-Jan-2012 13:02:00 org.apache.catalina.core.StandardContext start 
SEVERE: Context [/Gibbons5] startup failed due to previous errors 
28-Jan-2012 13:02:00 org.apache.catalina.loader.WebappClassLoader clearReferencesJdbc 
SEVERE: The web application [/Gibbons5] registered the JBDC driver [com.mysql.jdbc.Driver] but failed to unregister it when the web application was stopped. To prevent a memory leak, the JDBC Driver has been forcibly unregistered. 

tôi đã cố gắng làm cho sản lượng một chút tiết hơn bằng cách tăng Tomcats LogLevel để FINEST nhưng điều đó không' t cho tôi biết thêm thông tin. Ngoài ra, tôi đã thay đổi bản tóm tắt của ứng dụng để gỡ lỗi, nhưng điều đó cũng không giúp được gì.

Trên Tomcat địa phương, mọi thứ hoạt động tốt với cùng một cuộc chiến và Tomcat7.

BuildConfig.groovy

grails.project.class.dir = "target/classes" 
grails.project.test.class.dir = "target/test-classes" 
grails.project.test.reports.dir = "target/test-reports" 
grails.project.dependency.resolution = { 
    // inherit Grails' default dependencies 
    inherits("global") { 
    } 
    log "warn" // log level of Ivy resolver, either 'error', 'warn', 'info', 'debug' or 'verbose' 
    repositories { 
     grailsPlugins() 
     grailsHome() 
     grailsCentral() 
     mavenCentral() 
    } 
    dependencies { 
     compile "org.jadira.usertype:usertype.jodatime:1.9" 
     runtime 'mysql:mysql-connector-java:5.1.18' 
    } 
} 

codenarc.reports = { 
    XMLReport('xml') { 
     outputFile = 'CodeNarcReport.xml' 
     title = 'Gibbons5' 
    } 
    HTMLReport('html') { 
    outputFile = 'CodeNarcReport.html' 
     title = 'Gibbons5' 
     } 
} 
codenarc.propertiesFile = 'codenarc.properties' 

// cobertura exclusions 
coverage { 
    exclusions = [ 
     '**/BuildConfig*', 
     '**/*SecurityConfig*' 
    ] 
} 

application.properties

#Grails Metadata file 
#Tue Jan 03 23:21:41 CET 2012 
app.context=/ 
app.grails.version=2.0.0 
app.name=Gibbons5 
app.servlet.version=2.5 
app.version=0.1 
plugins.burning-image=0.5.0 
plugins.code-coverage=1.2.5 
plugins.codenarc=0.16.1 
plugins.hibernate=2.0.0 
plugins.joda-time=1.3.BUILD-SNAPSHOT 
plugins.jquery=1.7.1 
plugins.svn=1.0.1 
plugins.syntax-highlighter=0.1.4 
plugins.tomcat=2.0.0 

BootStrap.groovy

nhập khẩu grails.util.GrailsUtil

class BootStrap { 

    def baseDataGenerator 

    def init = { servletContext -> 
     switch (GrailsUtil.environment) { 
      case 'development': 
       log.debug("init() - booting as development") 

       baseDataGenerator.generateData() 

       break 

      case 'production': 
       log.info("init() - booting as production") 

       baseDataGenerator.generateData() 

       break 

      case 'test': 
       log.debug("init() - booting as test") 

       baseDataGenerator.generateData() 

       break 

      default: 
       log.warn("init() - uncovered environment " + GrailsUtil.environment) 
     } 
    } 

    def destroy = {} 
} 
+0

Có thể có nhiều lý do và nhiều khả năng là do plugin phụ thuộc yêu cầu API servlet 3.0, chỉ hoạt động cho tomcat 7. Vui lòng cung cấp BuildConfig.groovy và application.properties – Chris

+0

Tôi cũng thấy điều này khi hibernate không thể kết nối với cơ sở dữ liệu. Bạn nên bật ứng dụng loglevel để đăng nhập vào các lớp grails. – chrislovecnm

+0

@chrislovecnm: Tôi đã thử điều đó và chuyển tất cả chúng sang gỡ lỗi nhưng ứng dụng chưa đăng nhập bất kỳ nội dung nào. – Moritz

Trả lời

5

Tôi đã có cùng t ype lỗi trong Tomcat7. Tôi thấy rằng nếu tôi làm theo hướng dẫn về việc chuyển đổi Tomcat để sử dụng log4j nó có thể nắm bắt các lỗi ban đầu cho các bản ghi, nhưng với cấu hình Tomcat mặc định nếu một lỗi xảy ra sớm trong quá trình khởi động của ứng dụng Grails, "Error listenerStart" là tất cả bạn lấy.

Một số nguồn này:

  1. Datasource được thiết lập để dbCreate: xác nhận, và DB là out-of-sync w/classes miền GORM.
  2. Lỗi trong BootStrap.groovy, chủ yếu liên quan đến việc cố gắng tự động tạo đối tượng miền đã tồn tại do lần chạy trước đó.
  3. lỗi cấu hình khác (ít có khả năng
25

tôi đã nhận được báo lỗi tương tự, nhưng tôi thấy các bài viết sau đây:.

http://mythinkpond.wordpress.com/2011/07/01/tomcat-6-infamous-severe-error-listenerstart-message-how-to-debug-this-error/

Trong sơ yếu lý lịch, bạn cần phải tạo ra một logging.properties tập tin trong WEB-INF/lớp học của bạn (bạn có thể thêm nó vào thư mục phát nổ bên trong webapps và khởi động lại tomcat)

Nội dung của logging.properties có thể là:

org.apache.catalina.core.ContainerBase.[Catalina].level = INFO 
org.apache.catalina.core.ContainerBase.[Catalina].handlers = java.util.logging.ConsoleHandler 

Sau khi khởi động lại Tomcat bạn có thể thấy các lỗi chi tiết hơn.

+1

FYI ... bạn cần phải đặt tệp này trong/grails-app/conf để làm cho nó được triển khai vào đúng thư mục. – RMorrisey

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