2012-01-28 26 views
12

Tengo un problema con una aplicación de Grails en la que estoy trabajando y no puedo resolverlo. Es una aplicación Grails 2.0 que debe ejecutarse en un Debian estable con un Tomcat7. Así que construí el archivo war y lo implementé en el Tomcat. Tan pronto como lo comienzo, me sale el siguiente resultado del registro en el archivo de registro de Tomcat (catalina.out):"SEVERE: Error listenerStart" al intentar iniciar la aplicación Grails en 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. 

He intentado hacer la salida un poco más detallado mediante el aumento de los Gatos machos nivel de registro en FINEST Pero eso no' Dame más información. También cambié el nivel de registro de la aplicación para depurar, pero eso tampoco ayuda.

En mi Tomcat local todo funciona bien con la misma guerra y un 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

importación 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

Puede tener varias razones y muy probablemente esto se deba a una dependencia de plugin que requiere servlet 3.0 API, que solo funciona para tomcat 7. Proporcione su BuildConfig.groovy y su application.properties – Chris

+0

También he visto esto cuando hibernate no puede conectarse a la base de datos Debes subir el nivel de registro de la aplicación para registrar las clases de griales. – chrislovecnm

+0

@chrislovecnm: Intenté eso y los convertí a todos para depurar, pero la aplicación aún no está registrando nada. – Moritz

Respuesta

5

que he tenido el mismo t tipo de error en Tomcat7. Descubrí que si seguía las instrucciones sobre cómo convertir Tomcat para usar log4j, podía capturar los primeros errores en los registros, pero con la configuración predeterminada de Tomcat si ocurre un error al principio del proceso de inicio de la aplicación Grails, el "Error listenerStart" es todo usted obtiene.

Algunas fuentes de esta:

  1. origen de datos se establece en DBCREATE: validar y la DB están fuera de sincronización w/clases de dominio GORM.
  2. Errores en BootStrap.groovy, principalmente relacionados con el intento de crear automáticamente un objeto de dominio que ya existía debido a la ejecución anterior.
  3. Otros errores de configuración (menos probable
25

que estaba recibiendo el mismo error, pero me encontré con el siguiente artículo:.

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

En resumen, es necesario crear un logging.properties archivo en sus clases WEB-INF/(puede agregarlo a la carpeta explosion dentro de webapps y reiniciar tomcat)

El contenido de logging.properties puede ser:

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

Después de reiniciar Tomcat puede ver errores más detallados.

+1

FYI ... necesita poner este archivo en/grails-app/conf para poder desplegarlo en el directorio correcto. – RMorrisey

Cuestiones relacionadas