Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-cloud-platform/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 断电时正常关闭应用程序_Java_Shutdown - Fatal编程技术网

Java 断电时正常关闭应用程序

Java 断电时正常关闭应用程序,java,shutdown,Java,Shutdown,我知道使用UPS防止服务器立即关闭的重要性。如何在Java应用程序中侦听此类事件 假设电源中断时,我的UPS将继续满载运行5分钟。他们的服务器将继续运行,但我的应用程序如何知道是时候开始正常关机了 这个特殊的应用程序主要处理客户端到数据库的事务。我最担心的是在MySQL事务中间服务器立即失去功率的情况下的损坏数据。以下几点是否是处理电源状况的正确方法 停电了。UPS电池模式。应用程序检测到这一点 应用程序以某种方式阻止所有传入的请求(任何关于这样做的建议都会很有帮助) 在几分钟内,所有正在处理

我知道使用UPS防止服务器立即关闭的重要性。如何在Java应用程序中侦听此类事件

假设电源中断时,我的UPS将继续满载运行5分钟。他们的服务器将继续运行,但我的应用程序如何知道是时候开始正常关机了

这个特殊的应用程序主要处理客户端到数据库的事务。我最担心的是在MySQL事务中间服务器立即失去功率的情况下的损坏数据。以下几点是否是处理电源状况的正确方法

  • 停电了。UPS电池模式。应用程序检测到这一点
  • 应用程序以某种方式阻止所有传入的请求(任何关于这样做的建议都会很有帮助)
  • 在几分钟内,所有正在处理的事务都应该完成
  • 关闭应用程序
  • 如果电池耗尽,服务器将停机…等待恢复

有没有办法在电源恢复后自动重启服务器和应用程序,还是必须手动重启?

处理UPS可能需要在操作系统级别处理,使用SNMP或系统脚本等监控工具

如果您在线查看,您可能会发现许多脚本,用于在从UPS接收电源故障事件时执行某些操作

您必须向JVM PID发送退出信号(在Unix/Linux上),在JVM端,您可以使用方法注册一个关机挂钩


如果使用像Spring这样的框架,它肯定已经注册了一些东西,如果配置的话,会调用bean的destroy方法。

创建java套接字,监听java应用程序中本地主机定义的端口,并配置UPS软件,以便在断电时将事件发送到此端口。

哪个操作系统是运行在Ubuntu服务器上的应用程序。应该提到这一点。这似乎比另一个提到的解决方案(监听套接字)更干净一些。是吗?这种方式比其他方式有什么好处?通过监听插座并让UPS向插座发送信号,您的系统可能会更早收到警告。通过使用操作系统的内置机制,可能是操作系统在向JVM发送信号之前正在做一些其他事情。但这并不意味着一种选择比另一种好。如果需要提前通知并通过套接字实现,那么应用程序也应该对JVM的shutdownevents做出反应,因为关闭可能还有其他原因。