【发布时间】:2013-03-17 17:52:57
【问题描述】:
如果我们有一个 RMI 服务器应用程序,它通过 autosys 永久运行,然后在夜间关闭几个小时,如果应用程序是从命令行启动的,我们如何发送关闭消息。
例如,我们使用java -jar server.jar 启动jar,现在应用程序正在运行。如果它包含applicationClose() 方法,我们怎么称呼它 - 我们可以解析来自客户端的消息,但这当然是不可取的?
【问题讨论】:
如果我们有一个 RMI 服务器应用程序,它通过 autosys 永久运行,然后在夜间关闭几个小时,如果应用程序是从命令行启动的,我们如何发送关闭消息。
例如,我们使用java -jar server.jar 启动jar,现在应用程序正在运行。如果它包含applicationClose() 方法,我们怎么称呼它 - 我们可以解析来自客户端的消息,但这当然是不可取的?
【问题讨论】:
完全可以接受关闭请求方法,该方法返回 OK,然后调用 System.exit()。
您可能希望在调用它之前使用某种必需的凭据对其进行保护,但除此之外,您没有理由不能这样做。
另一个选项是让进程使用您自己的协议打开另一个 TCP 端口以进行关闭,或者安装 JMX 扩展以远程关闭服务。
【讨论】:
System.exit(),只需取消导出它自己,让 DGC 和 GC 发挥它们的魔力。