Java当服务器状态布尔值为false时,如何执行批处理文件



目标:我想制作一个java程序,其中包含一个布尔值,每5分钟检查一次我的游戏服务器(cloudnine1999.no ip.org:port 43594)

目的:如果崩溃,重新启动我的游戏服务器

问题:不知道如何使用java检查服务器是否在线。

程序功能:如果布尔值返回false(意味着服务器离线),我希望java程序打开一个特定的批处理文件,以便服务器启动(以防服务器崩溃)

我试着在谷歌上找到一些东西,但没有发现任何有用的东西,而且我还不是一个足够高级的程序员,无法独自解决这个问题,我只需要有人指导我/指引我用java编写服务器状态检查器的正确方向,我就可以从那里完成剩下的工作。

我可能要到下午4点左右才能回复你的答案;加拿大时区。

使用Socket检查服务器是否已启动(是否可以在不引发异常的情况下连接到IP和端口)。请注意,有些服务器不喜欢这些"空"连接。

try{
    new Socket("cloudnine1999.no-ip.org", 43594).close();
}catch(IOException ex){
    // Server probably down, restart it...
}catch(Exception ex){
    // Some  other problem, likely DNS or security related.
}

使用ProcessBuilder重新启动。

Shell脚本解决方案:

我假设该服务器是一个Java EE服务器。在Windows上,服务器被"bat"或在Linux/Unix上被"shell"脚本踢出。对于UNIX/LINUX:最简单的解决方案是在启动服务器的SHELL脚本中编写一个逻辑,在服务器启动时将JVM的PID记录在文件中。然后编写一个简单的shell脚本,通过使用命令"ps-aef|grep"来监视记录的PID。如果PID不存在,请启动服务器。您应该以在原始位置启动服务器的同一用户身份运行此脚本。第二个解决方案是"ps-auxww|grepjava"。请注意标识服务器的服务器变量。如果你运行命令,你就会知道。

Java解决方案:

每个服务器都有一个管理端口,可以使用HTTP URL对其进行监控。哦,你也可以点击应用程序的url。使用Java程序,您可以测试连接。若HTTP响应代码是200,那个么您是好的,若它不是200,比如-500/400,那个么服务器可能会被认为是死的。然后您需要启动服务器启动脚本。