2011-12-30 13 views

Respuesta

12

... y para unir las otras respuestas al funcionamiento de los entornos de Java Servlet;

si no declaras tus hilos como hilos daemon, la forma de señalar el cierre del servidor a los hilos es implementar un ServletContextListener y configurarlo para tu aplicación web (web.xml). Cuando se cierra Tomcat, primero se cierra cada aplicación, lo que a su vez provocará que se llame al método contextDestroyed() del oyente, y es aquí donde puede señalar sus propios hilos para que finalicen su trabajo.

+0

De todos modos, para conocer los hilos que están causando este problema, sería útil para mí, ya que también estoy abordando este problema. – Azim

+0

Puede usar kill -3, jstack o tomcat a menudo vuelca los rastreos de la pila en catalina.out. – ticktock

6

Cualquier subproceso que aún se esté ejecutando mantendrá vivo el proceso de Java (Tomcat). Asegúrate de que todos tus hilos salgan. Una vez que salgan tus hilos, Tomcat podrá cerrarse.

Consulte el javadoc para Thread. Tenga en cuenta lo siguiente:

La Máquina Virtual de Java continúa ejecutando las discusiones hasta cualquiera de las siguientes situaciones:

  • El método de salida de tiempo de ejecución de clase ha sido llamado y el gerente de seguridad ha permitido la operación de salida a tener lugar.
  • Todos los subprocesos que no son subprocesos de daemon han muerto, ya sea al regresar de la llamada al método de ejecución o al lanzar una excepción que se propaga más allá del método de ejecución.
+0

¿Puede sugerir alguna herramienta a través de la cual podamos verificar estos hilos? – Azim

5

necesita cancelar sus hilos, preferentemente llamando interrupt en ellos y asegurarse de que están escritos de tal manera que respondan a la interrupción - es decir, la comprobación de su bandera interrumpido y responder inteligentemente a InterruptedExceptions (no solo comerlos y continuar).

La sugerencia anterior asume que no desea que sus subprocesos abandonen lo que están haciendo inmediatamente. Si estás de acuerdo con eso, entonces hazlos demonios.

+3

Problema que uso bibliotecas de 3ra parte que crean hilos propios. Y con estos hilos hay un problema. – user710818

+0

@ user710818: sí, eso es un mal problema. Espero que las bibliotecas te proporcionen alguna forma para que les digas que hagan un elegante cierre. –

Cuestiones relacionadas