3 回答

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超11個(gè)贊
一種方法是使用執(zhí)行器。
在您的 pom 中添加此依賴項(xiàng)
<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=*
完成此操作后,您可以點(diǎn)擊此休息端點(diǎn)來關(guān)閉應(yīng)用程序
http://host:port/actuator/shutdown
這是一個(gè)POST調(diào)用。如果您在應(yīng)用程序中使用 Spring Security,那么您可能需要進(jìn)行一些調(diào)整以允許此端點(diǎn)通過。您可以使用curl來調(diào)用post調(diào)用,例如
curl -X POST http://host:port/actuator/shutdown

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以通過注冊(cè)一個(gè)端點(diǎn)(盡管高度安全)來做到這一點(diǎn),您的應(yīng)用程序可以向該端點(diǎn)發(fā)送關(guān)閉請(qǐng)求,并且您可以對(duì)端點(diǎn)進(jìn)行編碼,如下所示:
ConfigurableApplicationContext ctx = SpringApplication.run(YourApplicationClassName.class, args);
int exitCode = SpringApplication.exit(ctx, new ExitCodeGenerator() {
@Override
public int getExitCode() {
// no errors
return 0;
}
});
安全性 - 我建議,如果您想通過其他應(yīng)用程序向應(yīng)用程序發(fā)送終止信號(hào),您可以使用應(yīng)用程序令牌來唯一標(biāo)識(shí)有權(quán)關(guān)閉您的應(yīng)用程序的應(yīng)用程序。

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊
一種方法是終止應(yīng)用程序進(jìn)程。
首先,應(yīng)用程序必須將其 PID 寫入文件 (shutdown.pid):
SpringApplicationBuilder app = new SpringApplicationBuilder(Application.class)
.web(WebApplicationType.NONE);
app.build().addListeners(new ApplicationPidFileWriter("./bin/shutdown.pid"));
app.run();
然后您可以創(chuàng)建一個(gè)文件(shutdown.bat)并添加以下行:
kill $(cat ./bin/shutdown.pid)
shutdown.bat 的執(zhí)行從 shutdown.pid 文件中提取進(jìn)程 ID,并使用kill 命令終止啟動(dòng)應(yīng)用程序。
ps:從這里偷來的。
添加回答
舉報(bào)