Ho installato un'applicazione Wicket + Hibernate + Spring che prevede la raccolta di alcuni dati (con alcuni file generati e restituiti), l'archiviazione in un database, la creazione di alcune immagini e la visualizzazione di tutto questo su una pagina web.Wicket: come gestire le attività di lunga durata
Questo funziona perfettamente per le tirature brevi, ma a volte la raccolta dei dati (che comporta alcuni scricchiolii di numeri remoti) richiede troppo tempo (20+ minuti) e scade. Ho provato a risolvere questo problema utilizzando due approcci, ma entrambi mostrano alcuni problemi.
Il primo approccio utilizzava AjaxLazyLoadPanel s e faceva semplicemente tutto all'interno di getLazyLoadComponent. Questo ha funzionato bene per le tirature brevi, ma per le corse di 20+ minuti i LazyLoadComponents non si caricavano (bel ossimoro lì) a causa di timeout.
Il secondo approccio prevedeva la creazione di un frammento intermedio con un valore aggiunto AjaxSelfUpdatingTimerBehavior con una durata impostata su 10 secondi, che eseguiva il polling per i file creati nel crunch del numero. Sembra che le attività vengano eseguite in background senza problemi, ma non riesce quando i dati restituiti devono essere memorizzati nel database. Sto usando il modello Open Session in View, ma forse questo non riesce quando si tenta di memorizzare i dati dopo 20 minuti ?? (La soluzione potrebbe risiedere nella risoluzione di questo ..).
A causa dei problemi di cui sopra ora sto leggendo su approcci alternativi per gestire questi compiti lunga corsa e mi sono imbattuto:
Ora sto chiedendo se uno di questi potrebbe essere più adatto a risolvere i problemi di time-out che sto avendo sia nell'esecuzione delle attività e nella memorizzazione dei dati nel database in seguito, o se qualcuno ha altre soluzioni che potrebbero aiutare in questa situazione.
Mi piacerebbe davvero sapere se un nuovo approccio è fattibile prima di passare un altro giorno a implementare qualcosa che potrebbe rivelarsi non funzionare dopotutto.
Con i migliori saluti,
Tim
Grazie, è una cosa a cui ho pensato dopo aver postato la domanda (formulare una domanda è proprio come il ducking di gomma in quel modo). Dovrò ancora scoprire se questo risolverà effettivamente il problema, in quanto i registri non registrano nulla sulle sessioni scadute. Solo l'assenza dei risultati nel database è pertinente. Aggiornerà se trovo di più. – Tim
Finito andando per questo approccio e non ho avuto alcun problema dal .. Grazie! – Tim
Buono a sentire Tim! – Matt