使用执行器重新启动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();
}
期望运行该应用程序。
答案 0 :(得分:0)
如here所述:
在单独的非守护进程线程中重新创建上下文很重要-这样我们可以防止由close方法触发的JVM关闭关闭应用程序。否则,我们的应用程序将停止
您看到的错误表示spring应用程序已停止,因此没有注入的RestartEndpoint
服务可用于重新启动应用程序。
那篇文章应该有所帮助。