java spring deployment tomcat wicket

java - Cómo resolver Error listenerStart al implementar la aplicación web en Tomcat 5.5?



spring deployment (4)

Implementé una aplicación web Apache Wicket que usa Spring e Hibernate en mi instancia de Tomcat 5.5. Cuando navego a la interfaz de Tomcat Manager, veo que la aplicación web que implementé no se está ejecutando. Cuando presiono ''Start'' recibo el siguiente mensaje de error; "FAIL - La aplicación en la ruta de contexto / spaghetti no se pudo iniciar".

Mi catalina.log contiene lo siguiente:

Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/jsp/JspPage.class Apr 15, 2010 1:51:22 AM org.apache.catalina.loader.WebappClassLoader validateJarFile INFO: validateJarFile(/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start SEVERE: Error listenerStart Apr 15, 2010 1:51:24 AM org.apache.catalina.core.StandardContext start SEVERE: Context [/spaghetti] startup failed due to previous errors

Extracto de web.xml:

<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>

Cualquier ayuda es muy apreciada.


Descubrí que seguir estas instrucciones me ayudó a encontrar cuál era el problema. Para mí, ese fue el asesino, sin saber qué estaba roto.

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

Citando desde el enlace

En Tomcat 6 o superior, el registrador predeterminado es el registrador "java.util.logging" y no Log4J. Entonces, si está intentando agregar un archivo "log4j.properties", esto NO funcionará. Java utils logger busca un archivo llamado "logging.properties" como se indica aquí: http://tomcat.apache.org/tomcat-6.0-doc/logging.html

Para acceder a los detalles de depuración, cree un archivo "logging.properties" en su carpeta "/ WEB-INF / classes" de su WAR y ya está todo listo.

Y ahora, cuando reinicies tu Tomcat, verás que toda tu depuración está en todo su esplendor.

Archivo de ejemplo logging.properties:

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


Encontré este error cuando el JDK en el que compilé la aplicación era diferente de la JVM de tomcat. Verifiqué que el administrador de Tomcat ejecutaba jvm 1.6.0 pero la aplicación se compiló bajo Java 1.7.0.

Después de actualizar Java y cambiar JAVA_HOME en nuestro script de inicio (/etc/init.d/tomcat), el error desapareció.


Respondido por Tom Saleeba es muy útil. Hoy también tuve problemas con el mismo error

28 de abril de 2015 7:53:27 PM org.apache.catalina.core.StandardContext startInternal SEVERE: Error listenerStart

Seguí la sugerencia y agregué el archivo logging.properties. Y debajo estaba mi razón de fracaso:

java.lang.IllegalStateException: no se puede establecer la propiedad del sistema raíz de la aplicación web cuando el archivo WAR no se expande

La causa principal del problema fue un oyente (Log4jConfigListener) que agregué al web.xml. Y según el enlace SEVERE: Exception org.springframework.web.util.Log4jConfigListener , este oyente no se puede agregar dentro de un WAR que no esté expandido.

Puede ser útil que alguien sepa que esto estaba sucediendo en el equipo OpenShift JBoss.


/var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/jsp-api-6.0.16.jar /var/lib/tomcat5.5/webapps/spaghetti/WEB-INF/lib/servlet-api-6.0.16.jar

No debería tener ninguna biblioteca específica del servidor en /WEB-INF/lib . Déjalos en la propia biblioteca del servidor de aplicaciones. Solo provocaría colisiones en el classpath. Deshágase de todas las bibliotecas específicas del servidor de aplicaciones en /WEB-INF/lib (y también en JRE/lib y JRE/lib/ext si ha colocado alguno de ellos allí).

Una causa común de que las bibliotecas específicas del servidor de aplicaciones estén incluidas en la biblioteca de aplicaciones web es que los iniciadores piensan que es la forma correcta de corregir errores de compilación, entre otros, de que las clases javax.servlet no sean resueltas. Ponerlos en la biblioteca de webapp es la solución incorrecta. Debe hacer referencia a ellos en el classpath durante la compilación, es decir, javac -cp /path/to/server/lib/servlet.jar etc., o si está utilizando un IDE, debe integrar el servidor en el IDE y asociar el proyecto web con el servidor. El IDE tomará automáticamente las bibliotecas específicas del servidor en el classpath ( buildpath ) del proyecto webapp .