Nì. Cioè sì ma bisogna stare attenti a quell'unico.
E' unica nel senso che il server non crea dieci servlet e poi distribuisce alla prima servlet libera il compito di rispondere ad una richiesta.
Cioè non ci sono più servlet che gestiscono contemporaneamente richieste plurime.
Non è unica nel senso di identica. Il server può rimuovere l'istanza che sta usando. Ad esempio dopo un certo periodo in cui non siano arrivate richieste. Quando sarà necessario, il server creerà una nuova istanza della servlet.
Ecco perchè dico, attenzione al campo. Il campo in quanto tale è vincolato all'istanza. Se l'istanza cambia, la nuova avrà il suo nuovo campo, coi suoi diversi valori.
Probabilmente una soluzione sarebbe quella di assicurare la morte del thread nel metodo destroy() della servlet. Ma non sono sicuro perchè le specifiche non sembrano vincolare l'esecuzione del metodo init() di una servlet all'esecuzione del metodo destroy() dell'istanza precedente.
Io ho parlato di esistenza della servlet ma le specifiche parlano di uso dell'istanza della servlet.
Insomma, per farla breve, usa un attributo del contesto. Nel metodo init verifichi se esiste un Esecutore. Se non c'è lo crei e lo avvii. Nel metodo service verifichi se l'esecutore sia ancora attivo. Se non lo è lo rigeneri. E sei in una botte di ferro.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
|