我一直在寻找一种干净的方式来为我正在开发的服务器实现关闭逻辑。
我可以采取两种方法:
- 使用 Runtime.addShutdownHook() 在发出 Ctrl-C 时优雅地处理关闭。
- 监听指定的关闭端口(类似于 Tomcat 所做的)并在通过该端口接收到适当的命令时关闭。
第一种方法实现起来很简单,但是使用 Ctrl-C 作为关闭机制似乎并不优雅。第二种方法看起来更简洁,但需要配置和侦听另一个端口的开销。
我会很感激这方面的建议,特别是如果你能提出更好的选择。
我一直在寻找一种干净的方式来为我正在开发的服务器实现关闭逻辑。
我可以采取两种方法:
第一种方法实现起来很简单,但是使用 Ctrl-C 作为关闭机制似乎并不优雅。第二种方法看起来更简洁,但需要配置和侦听另一个端口的开销。
我会很感激这方面的建议,特别是如果你能提出更好的选择。
大概,您的应用程序已经在接收命令,对吧?我的意思是,它必须以某种方式输入!为什么不添加一个额外的关机命令呢?
显然,您在发出命令时需要一些安全性,但是如果您已经拥有执行关闭的代码(无论您将在挂钩中放入什么),您就可以放入命令。
我不确定你有选择;)
根据您的服务器运行的方式和位置,以及您使用的资源类型,您将需要为有人实际去的奇怪情况实施关闭挂钩,而 ctrl+c 就是整个事情(不管它是否在用户手册或不是)
另一方面,对于常规使用,有一种方法来推送关闭命令似乎是最好的方法。不过,您可能不需要专用端口或命令集;您也许可以将其包含到您的正常现有界面中。