【问题标题】:Background service with CDI使用 CDI 的后台服务
【发布时间】:2014-02-18 16:04:44
【问题描述】:

我有一个带有 CDI/Weld 的 Java SE 应用程序(以 org.jboss.weld.environment.se.StartMain 开头,没有任何应用程序服务器)。 在其中启动后台服务的正确方法是什么?

我尝试创建一个 @Singleton bean,它观察 ContainerInitialized 事件(如下所示),但我不确定容器何时会销毁此服务 bean。安全吗?有没有更好的办法?

@Singleton
public class BackgroundService {

    public void onStart(@Observes ContainerInitialized event) {
        // starting other threads etc.
    }
}

【问题讨论】:

    标签: java cdi


    【解决方案1】:

    我个人会使用@ApplicationScoped 而不是@Singleton。当容器关闭时,生命周期将关闭对象。如果你想启动一个线程,这将是一个放置代码的可能选择。

    默认情况下它不是异步的,所以你需要自己启动线程。

    【讨论】:

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