Ciao ragazzi,

ho un piccolo problemino con una servlet, cerco di illustrarvi al meglio la situazione.
Il problema è questo: da una pagina jsp, clicco su un bottone, il quale fa partire una servlet che svolge determinate operazioni.

Una volta eseguite e terminate tutte le operazioni, invia in automatico una mail con il risultato ed effettua il redirect su una nuova pagina jsp.

Ora: siccome queste operazioni sono "bloccanti" (nel senso che al momento l'esecuzione della servlet impiega circa 10 secondi, ma è possibile anche che ci impieghi molti minuti, per es 30 o addirittura un'ora), c'è il rischio che la pagina web mi vada in timeout interrompendo quindi l'esecuzione della servlet. (non posso stimare a priori il tempo impiegato, visto che devo leggere dei dati da DB, confrontarli con dati presenti in un file txt, generare un excel e inviare tale file via mail)

Quello che vorrei e che non riesco a fare è questo: dalla pagina jsp faccio partire la servlet che mi rimanda immediatamente alla "pagina di conferma" ma che nel frattempo svolga tutte le operazioni mentre io posso fare altro.

Vi riporto un estratto del codice della servlet:
codice:
.....
do.something();            //interrogazione DB, creazione file xls, invio mail

out.println("<script>window.location=\"http://localhost:8080/myproject/result.jsp");
out.println("alert (\"Servlet ok\");</script>");
Ho provato ad invertire le righe di codice scritte sopra, cioè, prima effettuavo il redirect sulla pagina result.jsp e poi eseguivo il "do.something", ma come potete immaginare, non cambiava nulla: prima eseguiva tutte le operazioni, poi effettuava il redirect.

Come potrei fare per risolvere il mio problema?
Qualche idea?
Avevo pensato all'utilizzo dei Thread, ma non sono sicuro di quello che dico e se può essere una soluzione.

Ringrazio tutti per l'attenzione!!

Ciao ciao