如何判断Java是否作为windows服务运行,以及是否使用了-Xrs标志
我们的Java应用程序在Windows上的一个反复出现的问题是,客户将其作为Windows服务运行,而没有指定Java-Xrs标志。这样,当管理员注销Windows机器时,Java进程接收到终止信号并终止,从而导致似乎是随机的生产停机情况 我想在服务器日志文件和监视工具中添加一个有关此配置问题的警告。 为此,我想知道: 1.我的Java应用程序是否作为Windows服务运行? 2.是否将-Xrs标志指定为java.exe命令的一部分?如何判断Java是否作为windows服务运行,以及是否使用了-Xrs标志,java,windows,service,Java,Windows,Service,我们的Java应用程序在Windows上的一个反复出现的问题是,客户将其作为Windows服务运行,而没有指定Java-Xrs标志。这样,当管理员注销Windows机器时,Java进程接收到终止信号并终止,从而导致似乎是随机的生产停机情况 我想在服务器日志文件和监视工具中添加一个有关此配置问题的警告。 为此,我想知道: 1.我的Java应用程序是否作为Windows服务运行? 2.是否将-Xrs标志指定为java.exe命令的一部分? 欢迎提出任何实现此目的的想法。找到了如何检查-Xrs标志,仍
欢迎提出任何实现此目的的想法。找到了如何检查-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;
}
}
导入java.lang.management.ManagementFactory;
导入java.util.List;
公共类GetCommandLineFlags{
公共静态void main(字符串[]args){
System.out.println(新的GetCommandLineFlags().isReducedSignal());
}
公共布尔值isReducedSignal(){
列表标志=ManagementFactory.getRuntimeMXBean().getInputArguments();
用于(字符串标志:标志){
如果(“-Xrs.”等于(标志)){
返回true;
}
}
返回false;
}
}
我刚刚“转换”了一个Java应用程序以赢得服务,当我注销时,该应用程序仍然存在。“服务器”是一个WindowsXP,带有JRE 1.7_80,我使用的是-Djava.awt.headless=true,你认为呢?