是否有可能使Java Servlet异常阻止应用程序启动?

时间:2013-09-17 14:35:44

标签: java tomcat servlets weblogic

我有一个标记为load-on-startup并已实施init()的Java Servlet。作为init()逻辑的一部分,我们会调用validate()来确定事情是否有效。

我的问题是,如果validate()确定事情不合适,我想阻止应用启动,因为需要修复某些事情。我尝试抛出一个ServletException,当管道信息输出到我的控制台时,我仍然能够在应用程序上发送流量并且它已做出响应。

最后,我的手与时间有点紧密相关。我的servlet扩展了一个基类,用于设置我正在尝试验证的内容。

如果有解决方案,我需要它在Tomcat和WebLogic上运行。

1 个答案:

答案 0 :(得分:3)

正如上面的Luiggi Mendoza所指出的,Web应用程序范围初始化的正确位置是在ServletContextListener中,而不是依赖于单个servlet的init方法。

当从侦听器的contextInitialized方法抛出异常(运行时异常)时,Web应用程序上下文被破坏(至少在Tomcat 6中)。

您的最佳出价是将初始化逻辑移动到ServletContextListener(您可以为每个Web应用程序定义多个侦听器,并按照它们在web.xml中注册的顺序执行)。并且只在servlet中保留请求处理逻辑。