我正在开发一个 Spring Boot 应用程序,其中我需要编写 Java 代码来关闭应用程序本身(包括其线程),然后重新启动它。我尝试了以下两种方法,第一种是在Java中发出Linux命令,如下所示:
Process p = Runtime.getRuntime().exec("kill -SIGINT " + pid);
其中 pid 是应用程序本身的 pid。这与按下的效果相同"ctrl + c"
。但是以这种方式成功关闭应用程序后,我不知道如何重新启动它。我尝试发出另一个命令(例如“mvn spring-boot:run
”,这就是我启动应用程序的方式)使用相同的方法,但由于应用程序已经关闭,这不起作用。
其次,我也尝试过致电refresh()
AbstractApplicationContext的方法如下:
AbstractApplicationContext appContext = new AnnotationConfigApplicationContext();
appContext.registerShutdownHook();
appContext.refresh();
但我不认为这种上下文刷新和重启是一样的吗?
那么使用 Java 代码重启 Spring Boot 应用程序的正确方法是什么?任何帮助表示赞赏,谢谢!
gstackoverflow 的答案对我不起作用,我的解决方案:
将依赖项添加到 build.gradle
compile group: 'org.springframework.cloud', name: 'spring-cloud-starter', version: '2.0.0.RELEASE'
compile("org.springframework.boot:spring-boot-starter-actuator")
自动连线重启端点
@Autowired
private RestartEndpoint restartEndpoint;
将其添加到 application.properties
management.endpoint.restart.enabled = true
并调用
Thread restartThread = new Thread(() -> restartEndpoint.restart());
restartThread.setDaemon(false);
restartThread.start();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)