我有 EJB bean,当我调用更新数据库中用户状态的方法时,有一个类 RemoveInactiveUsersTask 扩展了 TimerTask。
这是我班级的示例代码:
@Singleton
@Named
@ApplicationScoped
public class UsersStatusManager implements Serializable {
@SuppressWarnings("CdiInjectionPointsInspection")
@Inject
private EntityManager entityManager;
...
}
这是我的错误:
Exception in thread "Timer-2" javax.ejb.EJBException: org.jboss.weld.context.ContextNotActiveException: WELD-001303 No active contexts for scope type javax.enterprise.context.RequestScoped
我将 JSF 与 CDI 和 Seam 3 一起使用。方法当然是用 @Transactional 注释的,在我在计时器中使用它之前一切正常。我尝试使用非托管 EntityManager,但后来出现了事务所需的异常。
有什么想法可以解决这个问题吗?