Forum discussione progetto

Chiusura Server Eclipse

Chiusura Server Eclipse

di MAURO DÍAZ LUPONE -
Numero di risposte: 1

Salve professoressa, 

avevo un dubbio su come implementare la chiusura del Server in Eclipse. Attualmente quello che faccio è implementare una classe TerminationHandler che estende Thread e nel metodo run chiuda tanto la pool di thread come anche salva il gioco nel file json. Poi aggiungo questa classe nel RunTime con la chiamata Runtime.getRuntime().addShutdownHook(new TerminationHandler(...)). 

Il problema è che in Eclipse non funziona la chiusura con CTRL+C nel CLI e se premo il bottone rosso lo chiude direttamente senza chiamare prima il ShutDownHook. Come posso fare allora per chiamarlo? Non posso nemmento farlo con System.exit(0) perchè il server è bloccato sempre in attesa con socket.accept().

Grazie, cordiali saluti, Mauro.


In riposta a MAURO DÍAZ LUPONE

Ri: Chiusura Server Eclipse

di MATTEO LOPORCHIO -
Ciao,

Da quanto ho letto, Eclipse non riesce per sua natura a intercettare il Ctrl+C.
Dunque, per testare il funzionamento dello shutdown hook ci sono due modi:

1) Esegui il server da riga di comando al di fuori di Eclipse. Per farlo, devi invocare esplicitamente la JVM con il comando java all'interno di un terminale (su Linux/Unix), oppure nel Prompt dei Comandi o PowerShell (in ambiente Windows).
2) Esegui il server normalmente, all'interno di Eclipse, e simuli il Ctrl+C inviando un SIGINT al processo corrispondente. Su Linux/Unix puoi farlo con il comando kill -INT pid, dove pid rappresenta l'identificativo del processo. Fortunatamente Eclipse indica il PID del processo attualmente in esecuzione proprio sopra la console (vedi immagine allegata).

PID del processo in Eclipse