java - 一段时间后EntityManager变成NULL(大约10m)

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

在我的 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。

最佳答案

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

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

关于java - 一段时间后EntityManager变成NULL(大约10m),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6577037/

相关文章:

java - headless Chrome 删除输入值 - 日期时间字段

java - 将组合框对象转换回正确的类型

java - servlet和jsp有什么区别?

java - 在 Spring JPA 中聚合多个表中的数据的正确方法

jakarta-ee - 如何在 JEE6 应用程序中 stub 外部接口(interface)进行测试?

jakarta-ee - IntelliJ Idea 12.0 和 WebLogic 12c

java - 使用 jackson 或 Gson 解析具有不带字段名称的数组的 json

java - 保存类对象而不进行序列化

java - JPA:我应该如何注释这个 map 集合?

java - 类似条件在 JPA @Query 中不起作用