2012-07-05 103 views
1

我一直在寻找一种干净的方式来实现我正在开发的服务器的关闭逻辑。如何实现服务器关闭

有,我可以采取两种办法:

  • 使用Runtime.addShutdownHook()来妥善地处理发出按Ctrl-C时关闭。
  • 收听指定的关闭端口(类似于Tomcat的操作)并在通过该端口收到相应命令时关闭。

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

我会很感激这方面的建议,特别是如果你可以建议一个更好的选择。

+0

定义通过* existing *端口接收的关闭命令有什么问题? – EJP 2012-07-05 19:12:39

回答

2

我不知道你有一个选择;)

取决于如何与您的服务器上运行,什么样的,你使用的资源,你将需要实现关闭挂钩为奇数情况下有人实际上去和ctrl + C的整个事情(不管它是否在用户手册或不)

另一方面,对于常规的使用,有一种方法来推动关机命令似乎是最好的方式去。不过,您可能不需要专用的端口或命令集;您可能可以将其纳入您的正常现有界面。

+0

我会为@Miquel写什么。您总是希望发送某种类型的关机命令以进行正常操作,并且另一种方式可以发生意外情况,例如如果通常的接口不可达。 – jayeff 2012-07-05 15:54:32

3

大概你的应用程序已经接收到命令了吧?我的意思是,它必须以某种方式输入!为什么不只是添加一个额外的关机命令?

显然你需要一些围绕发出命令的安全性,但是如果你已经有了执行关闭的代码(不管你会放在钩子里),你可以放在命令中。