6

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

假设我的UPS在断电后会继续满载运行5分钟。他们的服务器将继续运行,但我的应用程序如何知道是时候开始正确关闭设备了?

这个特定的应用程序主要处理客户端到数据库的事务。如果服务器在 mysql 事务中立即断电,我最关心的是损坏的数据。以下几点是处理电源情况的正确方法吗?

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

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

4

2 回答 2

3

处理 UPS 可能必须在操作系统级别处理,使用 SNMP 或系统脚本等监督工具。

我你在网上看,你可能会发现很多脚本在接收到来自 UPS 的电源故障事件时执行一些操作。

您必须向您的 JVM PID 发送一个 QUIT 信号(在 Unix/Linux 上),并且在 JVM 端,您可以使用方法注册一个关闭挂钩Runtime.addShutdownHook

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

于 2013-05-16T15:44:07.680 回答
1

在 Java 应用程序中创建 Java 套接字以侦听来自本地主机的定义端口,并配置 UPS 软件以在断电时向该端口发送事件。

于 2013-05-16T15:48:45.470 回答