【问题标题】:@Singleton @Startup fully Asynchronous?@Singleton @Startup 完全异步?
【发布时间】:2011-10-21 15:27:38
【问题描述】:

我同时使用@Singleton 和@Startup 注释来创建一个长时间运行的进程。通过使用这些注释,我可以安全地假设我的进程将是一个完全异步运行的单线程吗?

【问题讨论】:

    标签: java asynchronous singleton startup


    【解决方案1】:

    您可以在类级别使用这些注释,所以我不确定您指的是什么“过程”(@PostConstruct 方法?)

    我不记得 EJB 3.1 规范的任何部分都谈到了所需的异步单例初始化。

    4.8.1 单例初始化:

    (...) bean 开发者可以选择配置 Singleton 用于急切的初始化。如果启动注释出现在 Singleton bean 类 (...) 容器必须在 在应用程序启动序列期间初始化 Singleton bean 实例。容器必须初始化所有这些 启动时间单例在任何客户端请求被传递到之前 应用程序中的任何企业 bean 组件。

    这取决于应用服务器供应商选择何种初始化技术。 我不会假设加载将在单独的进程中发生,而只是在服务器启动期间和为客户端提供服务之前发生。

    从评论中输入: 为您的耗时操作提供一个单独的异步 EJB 方法,该方法将从您的单例初始化程序 EJB 调用,怎么样?

    【讨论】:

    • 您好,感谢您的回复。我正在使用 JBOSS,是的,当我说“进程”时,我的意思是 @PostConstruct 带注释的方法:P 每次我尝试部署它时,我都尝试点击我的 RESTeasy API,但请求似乎挂起 :( 似乎认为启动“进程”是同步运行的,因为我的“进程”在无限循环中执行,没有其他方法可以通过......这听起来现实吗?
    • @travega - 只是在这里拍摄 - 为您的耗时操作提供一个单独的异步 EJB 方法怎么样?
    • 嗯,是的,我绝对可以试一试……当然,单例进程似乎阻止了我程序中的任何其他功能。我会试一试。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2012-01-24
    • 1970-01-01
    • 2015-06-07
    • 2012-06-20
    • 1970-01-01
    • 2013-05-29
    相关资源
    最近更新 更多