Prevenir el tiempo de espera de la sesión durante la actualización de la base de datos

Fond

Una aplicación web llama a un procedimiento almacenado para realizar una actualización intensiva de la base de datos. La porción relevante deweb.xml se actualizó a cuatro horas:

<session-config>
    <session-timeout>240</session-timeout>
</session-config>

Las tecnologías disponibles para la solución incluyen Java 1.4.2, Struts 2, Tomcat 5.5 y Apache commons. La mayoría de las otras tecnologías (como jQuery) no están permitidas.

Problem

La actualización tarda aproximadamente una hora en ejecutarse, sin embargo, un valor de configuración de cuatro horas está en contra de los estándares corporativos (por una buena razón). No se permite una configuración de tiempo de espera de cuatro horas en producción.

Pregunt

¿Qué garantizará que la solicitud no se agote mientras se ejecuta la actualización de la base de datos?

Ideas

Mi preocupación en los primeros dos casos es que el proceso generado finalmente será eliminado por el contenedor Servlet.

Page Refresh Engendre el proceso de actualización de la base de datos como una tarea en segundo plano. Tener un Servlet actualiza continuamente la página para verificar su finalización.JavaScript Ping Engendre el proceso de actualización de la base de datos como una tarea en segundo plano.Haga que el código JavaScript haga ping al servidor por un tiempo.

Similar a Prevención del tiempo de espera de la sesión durante un largo tiempo de procesamiento en JSF, pero sin jQuery.

Update Server

Escriba un servidor simple que escuche las solicitudes:

El Servlet envía una solicitud al oyente. El oyente ejecuta la actualización.

Dado que el servidor se ejecuta independientemente de Tomcat, el tiempo de espera de la sesión no puede ocurrir. La actualización de la base de datos se ejecutará hasta su finalización sin ser eliminada. Esto tiene numerosos problemas (el manejo de errores no es mi menor preocupación) y es probable que sea la opción de último recurso.

Mejoramient

Es posible optimizar la consulta para que finalice en menos de 30 minutos (el tiempo de espera máximo permitido), pero es probable que la consulta no se pueda optimizar lo suficiente.

Hardwar

amentablemente, la actualización del hardware de la base de datos no es una opción.

¡Muchas gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta