【问题标题】:EntityManager became NULL after a while (about 10m)EntityManager 在一段时间后变为 NULL(大约 10m)
【发布时间】:2011-09-28 10:54:57
【问题描述】:

在我的 JavaEE 6 应用程序 (JBoss 6.0.0.Final) 中,我有一个像这样概述的类层次结构

@Stateful public class UserFacade
{
  @Inject @MyRepository
  private EntityManager em;
}

@Stateful public class UserBl
{
  @EJB private UserFacade fUser;
}

public class MyServlet
{
  @EJB private UserBl blUser;
}

在登录过程中使用 servlet,它工作正常。但是,如果在大约 10 分钟的不活动期后从同一浏览器调用 servlet,则 UserBl 中的 EntityManager em 变为 NULL(在使用之前明确检查)。

在另一个应用程序 (JBoss 5.1.0.GA) 中,我有一个类似的问题,并通过显式检查 NULL 并在这种情况下从上下文中查找 EntitiyManager 来解决它。

我想知道是否存在根本的设计缺陷,或者我是否遗漏了什么。在这种情况下@Stateless Bean 也是可能的。但据我了解,这也应该适用于@Stateful Beans。

【问题讨论】:

    标签: java jpa jakarta-ee ejb-3.0 jpa-2.0


    【解决方案1】:

    据我回忆,有状态 bean 的注入一直存在问题(至少在 JavaEE 5 中)。这可能是一个钝化激活问题。

    但是您在这里并不真的需要有状态的 bean - EntityManager 是每个事务的(默认情况下;您可以将其设置为扩展的,以允许它跨越多个请求)并且无状态 bean 是正确的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-21
      • 1970-01-01
      • 2023-03-24
      • 1970-01-01
      相关资源
      最近更新 更多