我有一个运行多个线程的应用程序。它们每个都用一个 cath(Throwable) 包裹,如果发生意外情况,我可以使用它。在 Ubuntu/Linux 下重新启动应用程序本身的最佳方法是什么。我找到了这个项目“ Java Service Wrapper ”,有经验吗?
我尝试了 -XX:OnError 选项,但它似乎不起作用(Java(TM) SE Runtime Environment (build 1.6.0_16-b01))
我有一个运行多个线程的应用程序。它们每个都用一个 cath(Throwable) 包裹,如果发生意外情况,我可以使用它。在 Ubuntu/Linux 下重新启动应用程序本身的最佳方法是什么。我找到了这个项目“ Java Service Wrapper ”,有经验吗?
我尝试了 -XX:OnError 选项,但它似乎不起作用(Java(TM) SE Runtime Environment (build 1.6.0_16-b01))
您可以从批处理文件(循环)启动它并让它使用 System.exit(1) 吗?
如果是这样,您可以测试批处理文件中的错误级别,如果为 1,则循环返回并重新启动程序,但如果为 0,则退出批处理文件。
编辑:您是否希望从外部触发“重置”(来自 unix?)
如果是这样,我的建议如下:
还有其他方法可以向现有进程发送消息,但套接字可能是最简单的——它只是几行代码。另一个是在某个绝对位置轮询文件是否存在,并且还可以找到 PID 并杀死它。
套接字作为独立于平台的额外优势。
您必须设计一种机制来处理您的多个线程、捕获问题并确定是否可以从 Java 内部重新启动失败的线程。
操作系统唯一重要的地方是您的应用程序是否完全退出并需要重新启动。只要您的应用程序的某些部分正在运行,您就不应考虑这一点。