我有一个带有CDI/Weld的Java应用程序(从org.jboss.weld.environment.se.StartMain开始,没有任何应用服务器)。在其中启动后台服务的正确方法是什么?
我尝试创建一个@Singleton bean,它观察ContainerInitialized事件(如下面所示),但我不确定容器何时会破坏这个服务bean。安全吗?有更好的办法吗?
@Singleton
public class BackgroundService {
public void onStart(@Observes ContainerInitialized event) {
// starting other threads etc.
}
}发布于 2014-02-19 01:08:51
我个人会使用@ApplicationScoped而不是@Singleton。当容器关闭时,生命周期将关闭对象。如果您想启动一个线程,这将是一个可能的选择,将代码。
默认情况下,它不是异步的,因此您需要自己启动线程。
https://stackoverflow.com/questions/21859059
复制相似问题