【问题标题】:Auto-detect tomcat failed start by bash scriptsbash脚本自动检测tomcat启动失败
【发布时间】:2013-05-04 09:52:41
【问题描述】:

我编写了一个 bash 脚本,以便在触发时将 Web 应用程序自动部署到 tomcat 容器。这很简单:

  1. 转储当前数据库以进行备份
  2. 关闭当前的tomcat进程
  3. 删除网络应用程序文件夹
  4. 用新的替换war文件
  5. 再次启动 tomcat

但是,现在我想要一个后备。如果启动过程中出现问题,将恢复数据库并重新部署旧的war文件。

我的问题是我不知道网络应用程序何时无法启动。我的一个实现是我将检查我的 Web 应用程序的日志文件的大小,如果一段时间后它没有增加(这意味着没有写入任何内容),那么系统应该知道部署失败,我们应该恢复旧的网络应用程序。但是,这有点脏,我不确定如果我的日志文件在那个时候滚动正确会发生什么。

tomcat 是否有任何机制来支持 web 应用程序的启动失败检测?

【问题讨论】:

  • @home:感谢您的关注,但我想在服务器机器的上下文中检查部署是否成功,而不是通过 Web 访问。有没有办法在服务器上下文中检索相同的信息,或者我真的需要 curl 来获取它?
  • AFAIK,服务器(操作系统+硬件)不知道应用程序状态,因为您的应用程序“只是”运行 Tomcat 的 JVM 实例的一部分以及您的应用程序(只有一个 java 进程) .另一种方法是在您的应用程序中实现某种“探针”servlet。这使您能够测试的不仅仅是技术上的“活跃”状态(例如数据库可用性)。

标签: java bash tomcat web-applications


【解决方案1】:

您看过 Tomcat 附带的 Manager 吗?它为您提供了一个 API,可以轻松确定其中部署的 Web 应用程序的状态。

【讨论】:

  • 通过这种方式,看来我需要卷曲我的域才能得到结果?有当地的方法吗?在我的 bash 脚本中,我可以访问服务器上的所有文件(包括 tomcat 容器)。我们真的需要采用 curl 方式吗?
  • 访问 API 并让 tomcat 告诉您应用程序的状态可能是最可靠的方法。让你的 bash 脚本检查某些本地文件的存在或状态有点脆弱 - 如果文件的位置在随后的 tomcat 版本中发生变化会发生什么?。
猜你喜欢
  • 2015-08-24
  • 2017-12-08
  • 2016-06-20
  • 1970-01-01
  • 2023-03-05
  • 2019-09-02
  • 2018-04-29
  • 2019-06-07
相关资源
最近更新 更多