0

我不是程序员,但想知道如何执行以下任务。我正在与一位经验丰富的开发人员一起工作,并希望得到编程社区的帮助。如果您可以指导我们或作为脚本提供,那将是很棒的(提前感谢您!)

这是场景:

我有一个在亚马逊云 EC2 实例 (Linux) 上运行在 Tomcat 7 上的 JAVA 应用程序。

我不希望 Web 应用程序有任何停机时间(或很少)。

我想要的是,如果 Web 应用程序由于任何原因崩溃,它会在我试图找到崩溃原因时立即自动重启。

请注意我们正在尝试处理的场景:Tomcat 仍在运行,但 Web 应用程序已关闭。因此,您无法检查 Tomcat 是否已关闭作为重新启动应用程序的参数

4

1 回答 1

0

我对 EC2 的了解不足以完全回答这个问题(而且我只有几分钟的工作时间)但如果它在可脚本化的环境中运行并且您可以设置一个 cron 作业,它应该很容易。

  1. 让您的应用程序提供包含一些可解析的 XML 或 JSON 的页面。这种技术通常被称为“金丝雀”页面——就像矿井中的金丝雀(检测气体并死掉第一种交易)
  2. 创建一个使用 curl 或 wget 之类的访问金丝雀页面的脚本。如果响应失败(也就是您的应用程序已关闭),请重新启动 tomcat(或者如果它仍在运行,则杀死 tomcat 并重新启动它,听起来会这样)
  3. 通过 cron 将作业设置为每分钟左右运行一次

显然,您最好的选择是编写一个不会崩溃的应用程序 :) 但与此同时,这可能会有所帮助,并且带有一些应用程序配置信息的金丝雀页面通常非常有用。

抱歉,我没有深入的细节,但也许其他一些人可以在评论中发表(或者我下班后会发表)

此外,Tomcat / Java EE 提供了大量的防弹错误处理,因此您的应用程序出现故障应该很少见。您确定您的开发人员知道他在做什么吗?

于 2012-08-16T13:21:45.797 回答