一段时间后EntityManager变为NULL(大约10米)

时间:2011-07-05 00:18:56

标签: java jpa java-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,则EntityManager em中的UserBl变为NULL(在使用之前明确检查)。

在另一个应用程序(JBoss 5.1.0.GA)中,我发布了类似的代码并通过显式检查NULL并在该情况下从上下文中查找EntitiyManager来解决它。

我想知道是否存在基本的设计缺陷,或者我是否遗漏了某些东西。在这种情况下,@Stateless豆也是可能的。但据我了解,这也适用于@Stateful豆。

1 个答案:

答案 0 :(得分:1)

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

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