Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.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
是否可以使Javaservlet异常阻止应用程序启动?_Java_Tomcat_Servlets_Weblogic - Fatal编程技术网

是否可以使Javaservlet异常阻止应用程序启动?

是否可以使Javaservlet异常阻止应用程序启动?,java,tomcat,servlets,weblogic,Java,Tomcat,Servlets,Weblogic,我有一个Java Servlet,它标记为启动时加载,并实现了init()。作为init()逻辑的一部分,有一个调用validate(),它确定事情是否有效 我的问题是,如果validate()确定情况不正常,我想阻止应用程序启动时发出警报,提醒需要修复某些问题。我试着抛出一个ServletException,当它将信息传输到我的控制台时,我仍然能够在应用程序上发送流量,它响应了 最后,我的手有点被时间束缚住了。我的servlet扩展了一个基类,它设置了我试图验证的内容 如果有一个解决方案,我需

我有一个Java Servlet,它标记为启动时加载,并实现了
init()
。作为
init()
逻辑的一部分,有一个调用
validate()
,它确定事情是否有效

我的问题是,如果
validate()
确定情况不正常,我想阻止应用程序启动时发出警报,提醒需要修复某些问题。我试着抛出一个
ServletException
,当它将信息传输到我的控制台时,我仍然能够在应用程序上发送流量,它响应了

最后,我的手有点被时间束缚住了。我的servlet扩展了一个基类,它设置了我试图验证的内容


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

正如上面Luiggi Mendoza所指出的,web应用程序范围的初始化应该放在ServletContextListener中,而不是依赖单个servlet的init方法

当侦听器的contextInitialized方法引发异常(运行时异常)时,web应用程序上下文将被销毁(至少在Tomcat6中是这样)


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

我不确定通过
YourServlet\#init
是否可以做到这一点,但你可以停止应用程序启动,这并不是因为我想进入一个巨大的老鼠窝,但是,这难道不能有效地与启动时加载选项的好处竞争吗?@MattFelzani启动时加载不仅仅是为了实例化Servlet。它还起到了排序的作用,应该首先实例化
Servlet
。它实际上是为了快速加载,这样servlet就可以立即处理请求了。