Java 如何实现服务器关闭

Java 如何实现服务器关闭,java,client-server,Java,Client Server,我一直在寻找一种为我正在开发的服务器实现关闭逻辑的干净方法 我可以采取两种方法: 使用Runtime.addShutdownHook在发出Ctrl-C时优雅地处理关机。 侦听一个指定的关闭端口,类似于Tomcat所做的操作,并在通过该端口接收到相应命令时关闭。 第一种方法很容易实现,但使用Ctrl-C作为关闭机制似乎并不优雅。 第二种方法看起来更干净,但需要配置和侦听另一个端口的开销 如果您能提出更好的替代方案,我将非常感谢您的建议。您的应用程序可能已经收到命令了,对吗?我的意思是,它必须有某种

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

我可以采取两种方法:

使用Runtime.addShutdownHook在发出Ctrl-C时优雅地处理关机。 侦听一个指定的关闭端口,类似于Tomcat所做的操作,并在通过该端口接收到相应命令时关闭。 第一种方法很容易实现,但使用Ctrl-C作为关闭机制似乎并不优雅。 第二种方法看起来更干净,但需要配置和侦听另一个端口的开销


如果您能提出更好的替代方案,我将非常感谢您的建议。

您的应用程序可能已经收到命令了,对吗?我的意思是,它必须有某种输入!。为什么不添加一个额外的关机命令呢


显然,在发出命令时,您需要一些安全性,但是如果您已经拥有执行关闭的代码,那么您可以在钩子中放入任何内容,然后再放入命令。

您的应用程序可能已经收到命令了,对吗?我的意思是,它必须有某种输入!。为什么不添加一个额外的关机命令呢


显然,您希望在发出命令时有一定的安全性,但是如果您已经有代码来执行关闭,那么您可以在钩子中放入任何内容,只需放入命令即可。

我不确定您是否有选择

根据服务器运行的方式和位置,以及使用的资源类型,您将需要实现一个关机钩子,以防有人真的去了,而不管用户手册上有没有,ctrl+c就是全部内容


另一方面,对于常规使用,有办法按下关机命令似乎是最好的方法。不过,您可能不需要专用端口或命令集;您可以将其包含到您的常规现有界面中。

我不确定您是否有选择

根据服务器运行的方式和位置,以及使用的资源类型,您将需要实现一个关机钩子,以防有人真的去了,而不管用户手册上有没有,ctrl+c就是全部内容


另一方面,对于常规使用,有办法按下关机命令似乎是最好的方法。不过,您可能不需要专用端口或命令集;您可以将其包含到您的常规现有界面中。

我会选择@Miquel编写的内容。对于正常操作,您总是希望发送某种类型的关机命令,对于意外情况,您总是希望发送另一种方式,例如,如果无法访问通常的接口。我会选择@Miquel编写的命令。您总是希望为正常操作发送某种关机命令,为意外情况发送另一种方式,例如,如果无法访问常用接口。定义通过现有端口接收的关机命令有什么错?定义通过现有端口接收的关机命令有什么错?