我正在尝试验证应用程序启动时的某些条件,例如系统中是否存在关键文件。 要做到这一点,我正在使用SerlvetContextListener,它在启动时测试一系列条件。
如果不满足任何这些条件,我怎样才能使应用程序拒绝Tomcat中的部署?我可以抛出异常,并在日志中捕获它,但我希望应用程序根本不启动。 即使Tomcat服务启动失败也是一种解决方案。
最简单的方法是什么?我应该尝试连接到Tomcat管理器并取消部署应用程序吗?
答案 0 :(得分:2)
嗯...
根据您的原始问题,如果某些文件不存在(或其他条件不满足),您希望应用程序“根本不启动”。从逻辑上讲,条件的检查不可能是应用程序的一部分(如果检查是作为应用程序的一部分完成的 - 比如在启动时 - 那么必须启动应用程序才能将这些检查发生)。
所以:
如果您不希望应用程序完全启动 ,除非满足某些条件,那么您的解决方案必须位于应用程序的外部。例如,您可以编写自己的Tomcat启动脚本,该脚本将首先检查您的条件,然后才启动Tomcat。
如果您不介意应用程序启动并执行检查,那么ServletContextListener
正是您应该利用的。从contextInitialized()
内部引发异常将导致应用程序“无法”用于提供请求。或者,如果检查未通过,您可以与Tomcat的MBean通信以停止应用程序。