Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Servlets 停止从`ServletContextListener`方法`contextInitialized启动web应用程序`_Servlets_Production Environment_Java Ee 7 - Fatal编程技术网

Servlets 停止从`ServletContextListener`方法`contextInitialized启动web应用程序`

Servlets 停止从`ServletContextListener`方法`contextInitialized启动web应用程序`,servlets,production-environment,java-ee-7,Servlets,Production Environment,Java Ee 7,我已经通过注释在web应用程序中实现了一个。在我的方法中,我做了一些设置工作,并验证预期的资源是否可用 如果我在contextInitialized方法中确定出了问题,那么如何阻止web应用继续执行servlet?如果环境不合适(例如没有可用的数据库),则不应执行这些servlet 如何优雅地处理基于servlet的web应用程序的故障环境?否,ServletContextListener界面的设计目的似乎不是为了阻止web应用程序的启动 如前所述,Servlet规范指出,当遇到异常时,Serv

我已经通过注释在web应用程序中实现了一个。在我的方法中,我做了一些设置工作,并验证预期的资源是否可用

如果我在
contextInitialized
方法中确定出了问题,那么如何阻止web应用继续执行servlet?如果环境不合适(例如没有可用的数据库),则不应执行这些servlet


如何优雅地处理基于servlet的web应用程序的故障环境?

否,
ServletContextListener
界面的设计目的似乎不是为了阻止web应用程序的启动

如前所述,Servlet规范指出,当遇到异常时,
ServletContextListener
可能会以某种方式禁用对web应用的访问。“代码”这个词可以是可选的,而不是必需的。该规范也没有确切定义停止访问web应用程序意味着什么

显然,各种web容器中的实现行为差异很大。有些人什么也不做,有些人记录并继续,有些人阻止部署web应用程序

我使用Tomcat 8.0.33的经验…放入
抛出新的RuntimeException(“伪停止servlet”)contextInitialized
方法中的code>阻止部署应用程序。IDE报告中部署期间的控制台报告“失败-在上下文路径部署的应用程序/但上下文启动失败”。不幸的是,该控制台和所有日志都没有捕获实际异常的报告。因此,如果您从一个或多个侦听器中抛出多个异常,调试将不明显

正如Stack Overflow中其他地方提到的,最可靠的解决方案可能是让您的
ServletContextListener
使用存储在servlet会话中的标志变量标记成功或失败。然后让servlet代码检索并检查该标志。然后,servlet代码将确定适当的操作过程。您的web应用程序将被部署,但您自己的servlet可以选择不执行任何操作并返回一些HTTP错误代码

类似问题:


旁注:添加或编辑
ServletContextListener
时,您可能需要对项目执行“清理并生成”操作。开发功能时IDE的热插拔或部署可能无法在新的或更改的侦听器上进行。跟踪代码或进行一些日志记录以验证。

是否尝试引发异常?