如何实现服务器关闭

时间:2012-07-05 15:48:23

标签: java client-server

我一直在寻找一种为我正在开发的服务器实现关闭逻辑的简洁方法。

我可以采取两种方法:

  • 使用Runtime.addShutdownHook()在发出Ctrl-C时正常处理关闭。
  • 收听指定的关闭端口(类似于Tomcat所做的那样),并在通过该端口收到相应命令时关闭。

第一种方法很容易实现,但使用Ctrl-C作为关闭机制似乎并不优雅。 第二种方法看起来更干净,但需要配置和监听另一个端口的开销。

我很欣赏这方面的建议,特别是如果你能提出更好的选择。

2 个答案:

答案 0 :(得分:3)

据推测,您的应用程序已经在接收命令,对吧?我的意思是,它必须以某种方式输入!为什么不为关机添加额外的命令?

显然你会想要发出命令的一些安全性,但是如果你已经有了执行关闭的代码(无论你放在钩子里),你可以直接输入命令。

答案 1 :(得分:2)

我不确定你有选择;)

根据服务器运行的方式和位置,以及您使用的资源类型,您需要为奇怪的情况实现一个关闭钩子,其中有人真正去了并且ctrl + c是整个事情(无论它在哪个上面)用户手册与否)

另一方面,对于常规使用,有一种方法来推送关机命令似乎是最好的方法。但是,您可能不需要专用端口或命令集;您可以将它包含在正常的现有界面中。