我在 Win7 上有一个 Tomcat 9.0.0。我有两种关闭服务器的方法:
- 在服务器控制台中按 Ctrl+C
- 运行catalina停止命令
我仍然观察到不同的行为——第一种方法成功关闭第二种方法使服务器进程保持事件状态(可能是用户代码中一些未完成的线程)。所以我想知道这些关闭方式的实际区别是什么,tomacat 内部发生了什么?
最佳答案
通常在执行 Ctrl+C 时,操作系统会为该进程发送终止信号。这是强制关闭,您可能会丢失一些关键数据或某些资源未正确清理,例如数据库连接、线程本地值等。
当运行catalina stop 命令时,所有资源都会被清理并逐渐关闭,不会有任何损失。此外,如果使用 ShutDownHook
注册了任何内容,它也可以正常工作。
关于tomcat - Tomcat 关闭的方式有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54129624/