Premetto che io non uso Eclipse e che, comunque, non uso un servlet container integrato nell'ambiente di sviluppo.
Sono molte le considerazioni da fare su quel codice, che comunque è sbagliato.
1) Dove dovrebbe essere visualizzato il messaggio "sono nel destroy"?
Mandare messaggi su System.out dall'interno di una servlet fa sì che tali messaggi vengano redirezionati ad un file di log (che dipende dalla configurazione del servlet container, che dovrebbe essere Tomcat nel tuo caso). Hai verificato sui file di log di Tomcat se c'è quel messaggio? Tieni presente, inoltre, che quel messaggio viene inviato al log se e solo se la servlet viene effettivamente istanziata (cioè, se c'è stata almeno una richiesta per quella servlet), altrimenti il servlet container non ha nulla da dismettere in fase di shutdown, quindi nulla verrà inviato al file di log.
2) Questa riga di codice (e tutte quelle dopo, molto simili) è logicamente sbagliata
codice:
fosCalendarioA = new FileOutputStream("/WEB-INF/File_del_Server/Calendario_A_1314.txt", true);
Quando si scrivono web-applications e si intendono usare dei file su file-system bisogna sempre riferirsi a loro tramite il metodo getRealPath() fornito da ServletContext... perchè quel percorso punta ad una directory chiamata "WEB-INF" che si trova nella rood del disco fisso e non nella root dell'applicazione (come invece dovrebbe essere). Presumo che nella root del tuo disco fisso (posso immaginare che tu stia usando Windows e che il disco dove gira Tomcat sia il disco C: ) non vi sia nessuna directory "C:\WEB-INF". Sicché quel percorso è sbagliato. Quando si vuole ottenere un percorso "relativo alla root della web-app" bisogna appoggiarsi al ServletContext, che è l'unico a sapere quale sia la posizione assoluta della web-app. Quindi, tutti quei percorsi andrebbero modificati in questo modo:
codice:
ServletContext ctx = getServletContext();
fosCalendarioA = new FileOutputStream(ctx.getRealPath("/WEB-INF/File_del_Server/Calendario_A_1314.txt"), true);
E via via per tutti gli altri percorsi "simili".
3) Il blocco di codice che effettua la scrittura dei file dovrebbe trovarsi all'interno del blocco try/catch in cui questi vengono creati, in modo da prevedere il meccanismo di chiusura dei file alla fine:
codice:
FileOutputStream fos = null; // dichiaro gli oggetti
try {
// Creo gli output-streams
fos = new FileOutputStream( ... );
// Uso gli output-streams
DbHandler.salvaNeiFile( ... );
// Effettuo un flush, per assicurarmi che la scrittura venga fatta
fos.flush();
} catch(Exception e) {
e.printStackTrace();
} finally {
if (fos != null) {
// Se il file è stato correttamente aperto, mi assicuro di chiuderlo!
try { fos.close(); } catch (Exception e) { }
}
}
Ciao.