Как прервать процесс весенней загрузки приложения в 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

Другие вопросы по тегам