IllegalStateException:org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@xxxxxxxx已经关闭

时间:2019-07-24 14:13:47

标签: java spring-boot spring-boot-actuator

使用执行器重新启动Spring Boot应用程序后,我们将无法启动该应用程序。

我们有Spring Boot应用程序,我们想要在其中实现一个功能,以便可以使用执行器重新启动应用程序。应用程序可以运行,但是当我们调用restart()时,它不会启动并抛出异常:

  

”由以下原因引起:java.lang.IllegalStateException:   org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@1b84f475   已经关闭了”

    //Controller Class
    @PostMapping("/restartApp")
        public void restartUsingActuator() {
            restartService.restartApp();
        }


    //Service Class
    @Autowired private RestartEndpoint restartEndpoint;

        public void restartApp() {
            System.out.println("in restartApp");

            ConfigurableApplicationContext ctx = restartEndpoint.restart();
            ctx.refresh();

        }

期望运行该应用程序。

1 个答案:

答案 0 :(得分:0)

here所述:

  

在单独的非守护进程线程中重新创建上下文很重要-这样我们可以防止由close方法触发的JVM关闭关闭应用程序。否则,我们的应用程序将停止

您看到的错误表示spring应用程序已停止,因此没有注入的RestartEndpoint服务可用于重新启动应用程序。

那篇文章应该有所帮助。