Java EE应用程序启动失败

she*_*ley 14 servlets startup java-ee ejb-3.1

如果在应用程序初始化期间发生异常,是否有任何方法可以阻止Java EE应用程序启动?我基本上正在寻找一种方法,使应用程序在应用程序初始化期间从一个或一个bean 抛出一个未处理的异常后进入一个" j2ee.state.failed"状态(按照JSR-77).ServletContextListenerSingleton Startup

EJB规范似乎表明,如果在初始化过程中发生了异常Singleton的bean,应用程序将继续启动和运行没有错误; 但是,只有bean本身可能处于无法调用的状态.不幸的是,这不是我正在寻找的行为.

4.8.4单例错误处理

在Singleton初始化期间发生的错误被认为是致命的,必须导致丢弃Singleton实例.可能的初始化错误包括注入失败,从PostConstruct方法抛出的系统异常,或PostConstruct方法容器管理的事务成功提交失败.如果单例无法初始化,则对Singleton的尝试调用会导致第3.4.3节和第3.4.4节中定义的异常.

Servlet规范是它的要求更加模糊了一下,貌似不是需要一个容器中,任何特定的行为方式,而只是提示(通过使用术语"可能"),该网络模块继续启动,但任何请求应导致内部服务器错误.再说一次,遗憾的是这不是我正在寻找的行为.如果Web应用程序无法处理任何请求,为什么应该继续启动并且似乎正在运行?

11.6听众例外

容器可以使用HTTP状态代码500响应对Web应用程序的所有后续请求以指示应用程序错误.

根据我的经验,我看到应用程序服务器以不同的方式处理此要求.实际上,某些容器会阻止应用程序在这些情况下启动,而其他容器只会抑制异常并响应具有500个错误的请求,如规范中所述.

如果在初始化期间发生异常,我是否会忽略规范中阻止应用程序启动的任何部分?

aav*_*aav 0

对于 Web 应用程序 - 为什么不创建一个 servlet 过滤器,它将检查您自己的“失败”标志,并在引发此标志时为任何请求返回 500?从容器的角度来看,您的应用程序当然会启动。