如何通过start-stop-daemon优雅地关闭Spring Boot应用程序

时间:2016-04-18 10:27:39

标签: java multithreading spring-boot start-stop-daemon

我们有一个多线程Spring Boot应用程序,它在Linux机器上作为守护进程运行。当我尝试通过start-stop-daemon停止应用程序时,就像这样

start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME

发送SIGTERM信号,应用程序即将结束。但是我希望应用程序等待,直到每个线程完成它的工作。

有没有办法,如何管理收到SIGTERM信号时会发生什么?

2 个答案:

答案 0 :(得分:15)

Spring Boot应用程序向JVM注册一个关闭钩子,以确保在退出时正常关闭ApplicationContext。创建实现DisposableBean的bean(或bean)或具有@PreDestroy注释的方法。这个bean将在app shutdown时调用。

http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-application-exit

答案 1 :(得分:1)

@Evgeny提到的样本

.enc