【问题标题】:No active contexts for scope in EJB serviceEJB 服务中的范围没有活动上下文
【发布时间】:2013-05-06 15:07:01
【问题描述】:

我有 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,但后来出现事务所需的异常。

有什么办法可以解决这个问题吗?

【问题讨论】:

  • 那么RemoveInactiveUsersTask 类是什么样的呢?我怀疑你的一个 EJB 上有一个请求范围 - 如果你这样做并且你尝试在单独的线程中运行它 - 它不会工作,因为那里没有可用的请求上下文。

标签: java jsf ejb cdi seam3


【解决方案1】:

异常是正确的,这里没有活动的请求上下文。您应该尝试较低的范围;例如依赖。

【讨论】:

    猜你喜欢
    • 2015-09-04
    • 1970-01-01
    • 2016-11-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-16
    • 2014-12-25
    • 1970-01-01
    相关资源
    最近更新 更多