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.
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 .