He configurado una aplicación web Wicket + Hibernate + Spring que implica recopilar algunos datos (tener algunos archivos generados y devueltos), almacenar esto en una base de datos, crear algunas imágenes y mostrar todo esto en una página webWicket: cómo manejar tareas largas
Todo esto funciona bien para tiradas cortas, pero a veces la recopilación de datos (que implica el crujido de un número remoto) lleva demasiado tiempo (más de 20 minutos) y se agota el tiempo de espera. Intenté resolver esto utilizando dos enfoques, pero ambos muestran algunos problemas.
El primer enfoque fue usar AjaxLazyLoadPanel sy simplemente hacer todo dentro del getLazyLoadComponent. Esto funcionó bien para las tiradas cortas, pero para las carreras de más de 20 minutos, los LazyLoadComponents no se cargan (buen oxímoron) debido a los tiempos de espera.
El segundo enfoque consistía en crear un Fragmento intermedio con AjaxSelfUpdatingTimerBehavior añadido con una duración establecida en 10 segundos, que sondeó para los archivos que se crearon en el crujido de números. Esto parece hacer que las tareas se ejecuten en segundo plano sin problemas, pero falla cuando los datos devueltos necesitan almacenarse en la base de datos. Estoy usando el patrón Open Session in View, pero quizás esto falla al intentar almacenar datos después de 20 minutos. (La solución podría estar en resolver esto ...).
Debido a los problemas anteriores Ahora estoy leyendo sobre enfoques alternativos para manejar estas tareas de larga ejecución y encontré:
ahora estoy preguntando si alguno de estos podría ser más adecuado para resolver los problemas de tiempo de espera que tengo tanto en la ejecución de las tareas y el almacenamiento de los datos en la base de datos después, o si alguien tiene alguna otra solución que pueda ayudar en esta situación.
Me gustaría saber si un nuevo enfoque es viable antes de pasar otro día implementando algo que podría no funcionar después de todo.
Saludos,
Tim
Gracias, eso es algo en lo que pensé después de publicar la pregunta también (formular una pregunta es como esquivar el hule de esa manera). Todavía tendré que averiguar si esto realmente resolverá el problema, ya que los registros no registran nada sobre las sesiones con tiempo de espera excedido. Solo la ausencia de los resultados en la base de datos es aceptable. Se actualizará si descubro más. – Tim
Terminé yendo por este enfoque y no he tenido ningún problema desde ... ¡Gracias! – Tim
¡Es bueno escuchar a Tim! – Matt