尽管 JVM 会将SIGTERM 和类似信号转换为关闭挂钩,但许多服务关闭脚本使用 TCP 端口来启动关闭。(例如Tomcat的关闭端口、Java Service Wrapper、JBoss的管理接口等)
所以我认为不鼓励使用信号和关闭挂钩来优雅地关闭 java 服务,直到我发现Play! 框架使用关闭钩子管理服务生命周期,并且生成的启动脚本play dist
假定信号将被发送到 JVM 的 PID。
我知道信号是依赖于平台的,使用 TCP 端口是一种以跨平台方式管理服务的简单且可扩展的方式,但我想知道它的安全性以及当我依赖时需要考虑哪些风险将 SIGTERM 和关闭挂钩作为服务关闭的主要方法。