gpt4 book ai didi

jakarta-ee - Java EE 应用程序启动失败

转载 作者:行者123 更新时间:2023-12-03 22:42:09 29 4
gpt4 key购买 nike

如果在应用程序初始化期间发生异常,是否有任何方法可以防止 Java EE 应用程序启动?在从 JSR-77 抛出未处理的异常之后,我基本上是在寻找一种方法来使应用程序进入“j2ee.state.failed ”状态(根据 ServletContextListener )。或 Singleton Startup 应用程序初始化期间的 bean。

EJB specification似乎表明如果在 Singleton 初始化期间发生异常, bean,应用程序将继续启动并运行而不会出错;但是,只有 bean 本身可能处于无法调用的状态。不幸的是,这不是我正在寻找的行为。

4.8.4 Singleton Error Handling

Errors occurring during Singleton initialization are considered fatal and must result in the discarding of the Singleton instance. Possible initialization errors include injection failure, a system exception thrown from a PostConstruct method, or the failure of a PostConstruct method container-managed transaction to successfully commit. If a singleton fails to initialize, attempted invocations on the Singleton result in an exception as defined by Section 3.4.3 and Section 3.4.4.



Servlet specification它的要求有点模棱两可,似乎不需要容器以任何特定方式运行,而只是建议(通过使用术语“可能”)Web模块继续启动,但任何请求都应该导致内部服务器错误。同样,不幸的是,这不是我正在寻找的行为。如果 Web 应用程序无法处理任何请求,为什么还要继续启动并看起来正在运行?

11.6 Listener Exceptions

The container may respond to all subsequent requests to the Web application with an HTTP status code 500 to indicate an application error.



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

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

最佳答案

我认为这取决于您使用的应用程序服务器。正如您所提到的,如何处理无效状态的部署取决于他。部署失败时不会处于事件状态,因此您必须提供一项服务,以查找部署成功启动时应提供的提示。如果没有,您可以通知管理员。但这都是特定于服务器的,或者需要外部工具。

在一些项目中,我们使用 [nagios][1] 和 [rhq][2] 来检查部署。例如,nagios 在 JBossAS 上检查 jmx-console 以获取所需的部署。如果在部署后的几秒钟内未显示已部署的应用程序,则会通知 IT 人员。

关于jakarta-ee - Java EE 应用程序启动失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7043484/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com