如何中断Tomcat中的部署/拒绝应用程序



我正在尝试验证应用程序启动时的一些条件,例如系统中是否存在关键文件。为此,我使用了一个SerlvetContext监听器,它在启动时测试一系列条件。

如果不满足这些条件中的任何一个,我该如何使应用程序拒绝在Tomcat中进行部署?我可以抛出一个异常,并在日志中捕捉到它,但我希望应用程序根本不启动。即使Tomcat服务启动失败也是一个解决方案。

最简单的方法是什么?我应该尝试连接到Tomcat管理器并取消部署该应用程序吗?

嗯。。。

根据你最初的问题,如果不存在某些文件(或不满足其他条件),你希望应用程序"根本不启动"。从逻辑上讲,条件检查不可能是应用程序的一部分(如果检查要作为应用程序的组成部分进行,比如在启动时,那么必须启动应用程序才能进行这些检查)。

因此:

  1. 如果您根本不希望应用程序启动,除非满足某些条件,那么您的解决方案必须在应用程序外部。例如,您可以编写自己的Tomcat启动脚本,该脚本将首先检查您的条件,然后再启动Tomcat。

  2. 如果您不介意应用程序启动并执行检查,那么ServletContextListener正是您应该利用的。从contextInitialized()内引发异常将导致应用程序"不可用"以提供请求。或者,如果检查不通过,您可以与Tomcat的MBean通信以停止应用程序

最新更新