【发布时间】:2011-10-21 15:27:38
【问题描述】:
我同时使用@Singleton 和@Startup 注释来创建一个长时间运行的进程。通过使用这些注释,我可以安全地假设我的进程将是一个完全异步运行的单线程吗?
【问题讨论】:
标签: java asynchronous singleton startup
我同时使用@Singleton 和@Startup 注释来创建一个长时间运行的进程。通过使用这些注释,我可以安全地假设我的进程将是一个完全异步运行的单线程吗?
【问题讨论】:
标签: java asynchronous singleton startup
您可以在类级别使用这些注释,所以我不确定您指的是什么“过程”(@PostConstruct 方法?)
我不记得 EJB 3.1 规范的任何部分都谈到了所需的异步单例初始化。
4.8.1 单例初始化:
(...) bean 开发者可以选择配置 Singleton 用于急切的初始化。如果启动注释出现在 Singleton bean 类 (...) 容器必须在 在应用程序启动序列期间初始化 Singleton bean 实例。容器必须初始化所有这些 启动时间单例在任何客户端请求被传递到之前 应用程序中的任何企业 bean 组件。
这取决于应用服务器供应商选择何种初始化技术。 我不会假设加载将在单独的进程中发生,而只是在服务器启动期间和为客户端提供服务之前发生。
从评论中输入: 为您的耗时操作提供一个单独的异步 EJB 方法,该方法将从您的单例初始化程序 EJB 调用,怎么样?
【讨论】: