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