3 回答
TA贡献1856条经验 获得超11个赞
一种方法是使用执行器。
在您的 pom 中添加此依赖项
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
将这些属性添加到您的 yml / 属性文件中
management.endpoint.shutdown.enabled=true
endpoints.shutdown.enabled=true
management.endpoints.web.exposure.include=*
完成此操作后,您可以点击此休息端点来关闭应用程序
http://host:port/actuator/shutdown
这是一个POST调用。如果您在应用程序中使用 Spring Security,那么您可能需要进行一些调整以允许此端点通过。您可以使用curl来调用post调用,例如
curl -X POST http://host:port/actuator/shutdown
TA贡献1784条经验 获得超7个赞
您可以通过注册一个端点(尽管高度安全)来做到这一点,您的应用程序可以向该端点发送关闭请求,并且您可以对端点进行编码,如下所示:
ConfigurableApplicationContext ctx = SpringApplication.run(YourApplicationClassName.class, args);
int exitCode = SpringApplication.exit(ctx, new ExitCodeGenerator() {
@Override
public int getExitCode() {
// no errors
return 0;
}
});
安全性 - 我建议,如果您想通过其他应用程序向应用程序发送终止信号,您可以使用应用程序令牌来唯一标识有权关闭您的应用程序的应用程序。
TA贡献1796条经验 获得超7个赞
一种方法是终止应用程序进程。
首先,应用程序必须将其 PID 写入文件 (shutdown.pid):
SpringApplicationBuilder app = new SpringApplicationBuilder(Application.class)
.web(WebApplicationType.NONE);
app.build().addListeners(new ApplicationPidFileWriter("./bin/shutdown.pid"));
app.run();
然后您可以创建一个文件(shutdown.bat)并添加以下行:
kill $(cat ./bin/shutdown.pid)
shutdown.bat 的执行从 shutdown.pid 文件中提取进程 ID,并使用kill 命令终止启动应用程序。
ps:从这里偷来的。
添加回答
举报