1

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

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

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

4

1 回答 1

2

好...

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

所以:

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

  2. 如果您不介意应用程序启动和执行检查,那么这ServletContextListener正是您应该利用的。从内部抛出异常contextInitialized()将导致应用程序“不可用”来处理请求。或者,如果检查未通过,您可以与 Tomcat 的 MBean 通信以停止应用程序。

于 2013-02-05T01:35:05.663 回答