gpt4 book ai didi

java - 如果数据库未运行,启动时 grails 项目会发生什么情况?

转载 作者:行者123 更新时间:2023-11-29 01:03:25 24 4
gpt4 key购买 nike

我有一个带有 mysql 的 grails 项目以支持 GORM。当我在没有运行 mysql 的情况下启动项目时,它会给我一系列异常消息。这很好并且在意料之中。但是,问题是没有办法处理这个问题,这样我就可以捕获它们并向用户报告系统存在问题,他们需要等到它得到修复。

这个问题有两种情况。

第一个是当前正在运行的项目(部署在 tomcat 中并正在运行)通过停止 mysql 服务来终止其 mysql 连接。在这种情况下,它会毫无节制地继续抛出数据库异常。错误捕获机制对我来说失败了。我已将 500 映射到错误页面,但它也没有呈现。作为反向代理的 Nginx 最后显示了自己的超时页面。

第二种情况是当项目开始加载(比如tomcat容器启动)并且mysql服务已经关闭。在这种情况下,项目启动似乎受到启动失败的影响,尽管 tomcat 在日志中报告 war 正在运行,但在访问时它只会抛出黑页(说 404),这仍然很神秘,因为我已将 404 映射到错误页面也没有工作。

谢谢。

最佳答案

如果启动时没有数据库,则 war 根本不会加载到 tomcat 中。因此,此时您将获得默认的 404 错误页面。在这种情况下,日志中会抛出错误,但不会有其他错误。所以你的用户正在托管他们自己的应用程序实例,这听起来像是,我喜欢做的是公开一个健康页面。

健康页面可以位于已知的 URL 上,在没有数据库的情况下,您将获得 404,但您可以记录任何非 200 状态代码都是错误,并提供有关如何修复的信息。此外,如果您正在自动化部署,则此检查非常适合报告部署状态。

关于java - 如果数据库未运行,启动时 grails 项目会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22244460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com