Как прервать процесс весенней загрузки приложения в Windows, нажав Control-C?
Если я запускаю приложение весенней загрузки из командной строки Windows (используя java -jar) и нажимаю Control-C, чтобы завершить процесс, я получаю следующий вывод на консоль, и процесс остается открытым:
2017-11-27 20:15:22,713 INFO [Thread-11] (AnnotationConfigEmbeddedWebApplicationContext:984) - Closing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6057aebb: startup date [Mon Nov 27 20:14:22 IST 2017]; parent: org.springframework.context.annotation.AnnotationConfigApplicationContext@2df9b86
Я использую следующий код для прослушивания ContextClosedEvent.
@Component
public class ListenerClass {
@EventListener
public void handleContextClose(ContextClosedEvent event) {
shutdown(); // This method has System.exit(SpringApplication.exit(ctx)); inside it
}
}
Я попытался добавить следующий код в вышеупомянутый ListenerClass, но это не решило эту проблему:
@EventListener
public void handleContextStop(ContextStoppedEvent event) {
shutdown();
}
Как заставить приложение завершиться при нажатии Control-C?
1 ответ
Ваш слушатель не доступен (проверьте с помощью отладчика). В противном случае System.exit убьет все потоки - кстати, это плохая практика.
Вы должны подключиться к вашей JVM и запустить ее через jvisualvm, и проверить живую нить (и), как только вы нажмете ^C