【发布时间】:2017-07-13 07:45:06
【问题描述】:
我正在开发一个 Spring Boot 应用程序,我需要在其中编写 Java 代码来关闭应用程序本身(包括其线程),然后重新启动它。我尝试了以下两种方法,第一种是用 Java 发出 Linux 命令,如下所示:
Process p = Runtime.getRuntime().exec("kill -SIGINT " + pid);
其中 pid 是应用程序本身的 pid。这与按"ctrl + c" 的效果相同。但是以这种方式成功关闭了应用程序,我不知道如何重新启动它。我尝试使用相同的方法发出另一个命令(如“mvn spring-boot:run”,这是我启动应用程序的方式),但由于应用程序已经关闭,这不起作用。
其次,我也试过调用AbstractApplicationContext的refresh()方法如下:
AbstractApplicationContext appContext = new AnnotationConfigApplicationContext();
appContext.registerShutdownHook();
appContext.refresh();
但我觉得这种上下文刷新和重启不一样?
那么用 Java 代码重新启动 Spring Boot 应用程序的正确方法是什么?任何帮助表示赞赏,谢谢!
【问题讨论】:
-
我认为没有正确的方法可以使用 Java 代码重新启动 Spring Boot 应用程序。为什么不使用 shell 脚本。此外,服务器端应用程序的设计方式应允许它们长时间运行。
标签: java spring spring-boot