我有一个带有mysql的grails项目用于GORM支持。当我在没有运行mysql的情况下启动项目时,它会给我一系列异常消息。这是好的和预期的。但是,问题是没有办法处理它,以便我可以捕获它们并向用户报告系统存在问题,他们需要等到它得到修复。
此问题有两种情况。
第一个是当前正在运行的项目(在tomcat中部署并运行)通过停止mysql服务来获取其mysql连接。在这种情况下,它继续抛出数据库异常而没有任何宽限。错误捕获机制对我来说失败了。我已将500映射到错误页面,但它也不会被渲染。最后充当反向代理的Nginx会显示自己的超时页面。
第二种情况是项目开始加载(比如启动tomcat容器)并且mysql服务已经关闭。在这种情况下,项目启动似乎受到启动失败的水平,尽管tomcat在日志中报告战争正在运行但是当它被访问时它只是抛出黑页(说404)仍然是神秘的,因为我已经将404映射到错误页面也没有工作。
感谢。
答案 0 :(得分:0)
如果启动时没有数据库,则根本不会将war加载到tomcat中。因此,您将在此时获得默认的404错误页面。在这种情况下,日志中会抛出错误,但其他情况并不多。因此,您的用户正在托管他们自己的应用实例听起来像,我喜欢做的是公开健康页面。
健康页面可以是已知的URL,如果没有数据库,您将获得404,但您可以记录任何非200状态代码是错误的,并提供有关如何修复的信息。此外,如果您要自动部署,则此检查非常适合报告部署状态。