Por fin luego de tanto luchar pudimos dar con la respuesta de este conflicto que ciertos los lectores de nuestro sitio han tenido. Si tienes algo que aportar no dejes de compartir tu conocimiento.
Solución:
Con Tomcat 7, puede agregar StuckThreadDetectionValve que le permitirá identificar hilos que están “atascados”. Puede configurar la válvula en el elemento Contexto de las aplicaciones en las que desea realizar la detección:
...
...
Esto escribiría una entrada de ADVERTENCIA en el registro de tomcat para cualquier subproceso que tarde más de 60 segundos, lo que le permitiría identificar las aplicaciones y prohibirlas porque son defectuosas.
Según el código fuente, es posible que pueda escribir su propia válvula que intente detener el subproceso; sin embargo, esto tendría efectos en el grupo de subprocesos y no hay una forma confiable de detener un subproceso en Java sin la cooperación de ese subproceso. …
Si intenta evitar que una solicitud se prolongue demasiado, establecer un tiempo de espera en Tomcat no le ayudará. Como dice Chris, puede establecer el valor de tiempo de espera global para Tomcat. Pero, desde The Apache Tomcat Connector – Generic HowTo Timeouts, vea la sección Reply Timeout:
JK también puede usar un tiempo de espera en las respuestas a solicitudes. Este tiempo de espera no mide el tiempo total de procesamiento de la respuesta. En su lugar, controla cuánto tiempo se permite entre paquetes de respuesta consecutivos.
En la mayoría de los casos, esto es lo que uno realmente quiere. Considere, por ejemplo, las descargas de larga duración. No podría establecer un tiempo de espera de respuesta global efectivo, porque las descargas podrían durar muchos minutos. Sin embargo, la mayoría de las aplicaciones tienen un tiempo de procesamiento limitado antes de comenzar a devolver la respuesta. Para esas aplicaciones, puede establecer un tiempo de espera de respuesta explícito. Las aplicaciones que no armonizan con los tiempos de espera de respuesta son las aplicaciones de tipo por lotes, el almacén de datos y las aplicaciones de generación de informes que se espera que observen largos tiempos de procesamiento.
Si JK cancela la espera de una respuesta porque se disparó un tiempo de espera de respuesta, no hay forma de detener el procesamiento en el backend. Aunque libera recursos de procesamiento en su servidor web, la solicitud continuará ejecutándose en el backend, sin ninguna forma de devolver un resultado una vez que se agote el tiempo de espera de respuesta.
Entonces Tomcat detectará que el servlet no ha respondido dentro del tiempo de espera y enviará una respuesta al usuario, pero no detendrá la ejecución del hilo. No creo que puedas lograr lo que quieres hacer.
Puede establecer el tiempo de espera predeterminado en server.xml