我们有一个作为服务运行的 Web 代理。它是一个直接的 EXE,里面是一个打包的 Java 应用程序。
有时,我们会在应用程序生成的日志文件中看到此信息,并且代理停止工作。
2013 年 11 月 26 日 09:42:48,661 [ServerThread] 错误 pe - 无法启动服务器 java.net.SocketException:无法识别的 Windows 套接字错误:0:JVM_Bind 在 java.net.PlainSocketImpl.socketBind(本机方法)在 java.net.PlainSocketImpl.bind(PlainSocketImpl.java:365)在 java.net.ServerSocket.bind(ServerSocket.java:319)在 java.net.ServerSocket.(ServerSocket.java:185)在 java.net.ServerSocket.(ServerSocket.java:141)在 pe.a(未知来源)在 oe.run(未知来源)
但 EXE 仍然运行良好。当 Java 发生故障时,是否有任何通用方法可以让 EXE 失败,从而让 Windows 本机重新启动失败服务的功能发挥作用?显然,如果软件供应商必须内置此功能,那么亲爱的读者,您不可能知道答案。我只是想知道是否有我不知道的 Java 标志。
看起来它是由普罗克伦,我认为。我是根据在connector.exe文件上运行strings.exe得出这个结论的。
我知道更完整的解决方案是日志文件监控,并带有警报和可能的自动修复。但这不是我现在能做的事情。
答案1
这是我们作为系统管理员面临的典型严重错误之一。进程正常运行,但功能/应用程序已停止运行。
您可以采取两种不同的方法:
- 查看日志文件并对典型的错误情况做出反应
- 在服务器上监控服务功能并对故障做出反应
在两种情况下您都需要避免误报。
适当的反应是重新启动服务 - 您必须触发它 - 希望它在您的情况下有效。