Exit gracefully?

Olá pessoal?

Estou trabalhando com uma aplicação (feita por terceiros, nao tenho acesso ao código) que executa na console, e finaliza com um Ctrl-C. Quando isso acontece, é exibida no log uma mensagem “Finalizando a aplicação” e o sistema faz algumas limpezas antes de encerrar.

Já quando executo a mesma aplicação dentro do Eclipse, o único jeito de parar o programa é clicando no botão Stop, e quando isso acontece o programa fecha imediatamente.

Com esse fato, fiquei com duas dúvidas?

  1. Por curiosidade: como encerrar de forma controlada um programa quando o mesmo é finalizado pelo S.O. ? Algo do tipo “tratar o sinal de kill”… Como disse anteriormente, acontece com a aplicação que estou utilizando então eu sei que é possivel, então qual seria a maneira de implementar isso no código?

  2. Seja qual for o modo em que a aplicação faz isso, como posso fazer para obter o mesmo efeito quando estiver em execução dentro do Eclipse?

Se você já usou o JBoss sabe que para encerrá-lo você usa Ctrl+C; se você fizer isso, ele começa a efetuar o “undeploy” das aplicações.

Ele usa isto: Runtime.addShutdownHook

Se você usar o Eclipse, no entanto, ele irá encerrar a sua aplicação sem dar chance nenhuma para nada, se não me engano.

Sobre o Runtime.addShutdownHook, muito interessante, fiz alguns testes e é exatamente o que eu queria saber como era feito. Obrigado!

Agora… alguém saberia se existe alguma forma de o Eclipse finalizar o programa de uma forma menos bruta ? :slight_smile: