2

我们在 Windows 上的 Java 应用程序经常出现的一个问题是,客户在没有指定 Java -Xrs 标志的情况下将其作为 Windows 服务运行。这样,当管理员注销 Windows 机器时,Java 进程会收到终止信号并终止,从而导致看似随机的生产停机情况。

我想向服务器日志文件和监控工具添加有关此配置问题的警告。为此,我想知道: 1. 我的 Java 应用程序是否作为 Windows 服务运行?2. -Xrs 标志是否指定为 java.exe 命令的一部分?欢迎任何如何实现这一目标的想法。

4

1 回答 1

1

找到了如何检查 -Xrs 标志,仍然需要确定是否作为服务运行:

import java.lang.management.ManagementFactory;
import java.util.List;

public class GetCommandLineFlags {

   public static void main(String[] args) {
       System.out.println(new GetCommandLineFlags().isReducedSignal());
   }

   public boolean isReducedSignal() {
      List<String> flags = ManagementFactory.getRuntimeMXBean().getInputArguments();
      for (String flag : flags) {
         if ("-Xrs".equals(flag)) {
            return true;
         }
      }
      return false;
   }

}
于 2013-04-25T11:59:31.260 回答