Ver Mensaje Individual
  #4 (permalink)  
Antiguo 03/04/2011, 21:54
Avatar de dackiller
dackiller
 
Fecha de Ingreso: septiembre-2003
Ubicación: The Matrix
Mensajes: 341
Antigüedad: 21 años, 2 meses
Puntos: 4
Respuesta: Servlet de larga duración

Hola:

Es una solución válida, aunque no se cual es el tipo de tarea, pero estoy viendo a simple vista un problema de concurrencia.

Yo pienso que la solución vendría luego hacer un buen analisis, ya que estamos hablando de una aplicación web la cual pudiera tener varios usuarios realizando la misma tarea concurrentemente.

El punto es:

- Que sucede si la persona que corrió la tarea se canso de esperar y otros usuario hacen la petición de la misma tarea mientra esta corriendo ?

Si la tarea es unica para todos los usuarios vas a tener problemas al usar el metodo antes mencionado ya que el HashMap moriria en lo que termine la tarea y adíos al token y si sumamos que la session termino antes que la tarea, sería mucho peor.

En este caso te aconsejaria usar un ThreadLocal + Metodos sincronizados y así poder monitorear la tarea. Lo más sano seria crear un log desde que comienza hasta que la tarea termine bien sea en base de datos ó como lo prefieras. El ThreadLocal te va ayudar porque pudieses asignar como variable del Thread la session del usuario y asi identificar la tarea.

De todas formas, si usas Tomcat, Dale una leida a ServletsListeners, que aunque no se cuales sean tus requerimientos esto te pudiece ayudar.

Saludos.
__________________
--
NOTA: Si haz conseguido la solución a tu problema, por favor edita el titulo del tema colocando el prefijo [SOLUCIONADO], para que otros usuarios puedan encontrar soluciones más rápido.