首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >优雅地停止Java服务,使用nohoup命令执行

优雅地停止Java服务,使用nohoup命令执行
EN

Stack Overflow用户
提问于 2022-05-03 13:07:53
回答 2查看 225关注 0票数 1

我是java spring-boot的初学者。

当我启动java服务器时

nohup java -jar demo-0.0.1-SNAPSHOT.jar

命令我的线程启动它们的操作

有时当我停止我的服务器时

kill -9 processid

所以我正在运行的线程数据丢失了。

每当服务器停止时,我想在数据库中维护一个线程标志。

在遵循本教程弹簧启动停机时,我尝试实现上述场景。它正常工作,但它破坏了我的安全性,因为任何人都可以使用这个API来停止我的服务器。

我需要一种方法来优雅地终止我的服务器并调用ContextClosedEvent类。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-05-04 20:54:06

如果您使用kill -9,那么Spring提供的任何优雅的关闭支持都不会起作用。这就是SIGKILL,它不能被捕获、阻塞或忽略,所以您的应用程序当然不能做任何响应它的事情。

使用kill -SIGTERM允许在您的Java运行时中执行关机挂钩。

避免像15和9这样的神奇数字;使用有意义的符号(如SIGTERM )。

票数 4
EN

Stack Overflow用户

发布于 2022-05-04 17:02:45

如果您使用的是2.3及更高版本的Spring版本,则应该将优美停工的特殊配置添加到application.yml

代码语言:javascript
运行
复制
server:
  shutdown: graceful

来自java文档:

WebServer应该支持优雅的关闭,允许活动请求有时间完成。

另一个选择是immediate

WebServer应立即关闭

附加资源关闭Spring应用程序

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72099871

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档