Estoy construyendo una aplicación web relativamente simple donde el servlet principal implementa la interfaz ServletContextListener
para determinar si el contexto se ha iniciado o detenido. Implementé mis métodos contextInitialized
, contextDestroyed
, init
y destroy
(ambos init
y llaman a super
en la clase base). Actualmente no he implementado ninguna funcionalidad real que no sea la inicializada con log4j en el método contextInitialized
donde cargo el archivo log4j.properties
.Tomcat no se apaga dentro de Eclipse
Cuando inicio y detengo el servidor Tomcat desde Eclipse, todo se llama en el orden correcto (estoy usando algunos System.out.println
para probar esto) pero después de unos 10 segundos de detener el servidor me presento Eclipse con un emergente que indica lo siguiente:
servidor Tomcat v6.0 servidor en localhost no responde. ¿Desea finalizar este servidor? Haga clic en Aceptar para finalizar el servidor o haga clic en Cancelar para continuar esperando.
Esto es lo que se imprime en mi consola de Eclipse cuando deje el servidor:
04/01/2010 7:39:13 PM org.apache.catalina.core.StandardService detener
INFO : detener servicio Catalina
contextDestroyed
04/01/2010 07:39:13 PM org.apache.coyote.http11.Http11Protocol destruir
INFORMACIÓN: Detener Coyote HTTP/1.1 en http-8080
Y después del último mensaje INFO
, simplemente se cuelga hasta que aparece la ventana emergente. Si elijo esperar, presiono Cancelar, Eclipse se vuelve inutilizable y tengo que eliminar el proceso de Eclipse de una terminal.
Cualquier comentario sobre cómo resolver este problema sería muy apreciado.
ACTUALIZACIÓN:
El problema fue causado por un hilo no demonio que estoy empezando dentro de mi método init
(olvidó mencionar que :). El problema se resolvió deteniendo explícitamente el hilo con el método stop
, aunque ese método parece estar en desuso.
Estoy realmente la primera persona en utilizar la etiqueta 'servlet'?!? – Luke
'servlets' es la etiqueta más común, parece. :) – ZoogieZork
Creo que esto sucede no solo dentro del eclipse, sino en general. Por lo que recuerdo, fue un problema con los recursos de log4j, google con eso en mente. – Bozho