在启动时中止java webapp

时间:2008-11-07 14:21:55

标签: java websphere web-applications

我的webapp是部署到websphere服务器中的更大EAR的一部分。服务器在同一虚拟服务器上托管其他应用程序的数量。我的webapp在servletContextListener-> contextInitialized方法中进行了一些初始化/运行状况检查。如果初始化/运行状况检查失败,我想使webapp不可用。这样做的可行方法是什么?是否会在contextInitialized中抛出RuntimeException? EAR的其余部分是否仍然可用?谢谢。

2 个答案:

答案 0 :(得分:7)

我建议从RuntimeException投出ServletContextListener.contextInitialized

Servlet 2.3对此并不十分清楚,但Servlet 2.4增加了以下细节:

  

有些例外情况不会发生   调用堆栈中的另一个组件   应用。一个例子是a   ... ServletContextListener   在a期间抛出未处理的异常   servlet上下文的通知   初始化…。在这种情况下,   开发者没有机会   处理异常。容器   可能会响应所有后续请求   使用HTTP访问Web应用程序   状态代码500表示一个   申请错误。

由于它表示servlet引擎“可能”禁止访问应用程序,因此您可能会发现服务器执行其他操作。但是,Tomcat和WebLogic都禁用了应用程序,我能想到的唯一合理的事情就是忽略该异常。我看不到一个非常受欢迎的容器 - 所以你最好自己在WebSphere中测试它。

答案 1 :(得分:0)

抛出RuntimeException可能只会使该servlet不可用。更安全的方法可能是实现类似Spring拦截器的东西,如果检查没有平移,它将转发到错误页面或其他东西。这样,您不需要阻止应用程序加载,但可以在运行时更优雅地处理它。