【问题标题】:Programmatically stop Java EE application during initializaton在初始化期间以编程方式停止 Java EE 应用程序
【发布时间】:2015-03-19 10:57:57
【问题描述】:

是否有任何 Java EE 标准(应用服务器交叉兼容)方法如何在初始化期间停止 Java EE 应用程序,即在运行 @Singleton @Startup 类的 @PostConstruct 注释方法期间?

@Singleton
@Startup
public class Initializer {

    @PostConstruct
    public void checkConfiguration() {
        // stop application here
    }
}

我搜索软方式来停止应用程序,整个应用程序服务器,不像System#exit

【问题讨论】:

  • 为什么不直接从checkConfiguration 抛出一个IllegalArgumentException?这应该会阻止您的部署。
  • 是的,它有效。实际上任何RuntimeException 都有效。您想将其作为常规答案发布以便我接受吗?

标签: jakarta-ee application-server


【解决方案1】:

如果您从 @Startup 注释的 @Singleton 中的 @PostConstruct 注释方法中抛出任何类型的 RuntimeException(例如配置错误的 IllegalArgumentException),那么整个应用程序将无法部署。

来自 EJB 3.2 规范的第 4.8.1 节“单例会话 Bean 初始化”:

如果 Startup 注释出现在单例会话 bean 类上,或者如果单例会话 bean 已通过部署描述符指定为需要预先初始化,则容器必须在应用程序启动序列期间初始化单例会话 bean 实例。在将任何外部客户端请求(即源自应用程序外部的客户端请求)传递到应用程序中的任何企业 bean 组件之前,容器必须初始化所有此类启动时单例会话 bean。

如果初始化失败,这不能满足。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多