4

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

我的问题是,如果validate()确定的事情不正常,我想阻止应用程序作为需要修复的警报启动。我尝试将一个ServletException管道信息发送到我的控制台,但我仍然能够在应用程序上发送流量并且它做出了响应。

最后,我的手在时间上有些束缚。我的 servlet 扩展了一个基类,它设置了我要验证的内容。

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

4

1 回答 1

3

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

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

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

于 2013-09-17T14:48:06.647 回答