2

我正在使用 EntityManagers 对数据库执行操作。但是,这种情况发生在 20% 的情况下,EntityManager 获得的连接已关闭,我无法执行任何操作。EntityManager 是打开的,因为我确实检查了它,但连接已关闭。

代码是这样的:

我有一个会话 bean:

@Stateless(name = "TestDAO", mappedName = "TestDAO")
@Remote
public class TestDAOBean
  implements TestDAO
{
  @PersistenceContext(unitName="support")
  private EntityManager em;

  public TestDAOBean()
  {
  }

  public void persistObj(MyObj obj)
  {
    try
    {
      Query query = em.createNamedQuery("MyNamedQuery");
      query.setParameter("Name", "Param");
      query.setParameter("Value", "bla bla");
      query.executeUpdate();

      em.persist(obj);
    }
    catch(Exception ex) 
    {
      ex.printStackTrace();
    }
  }

有时,上面的 NamedQuery 由于“连接已关闭”错误而失败。我的印象是,如果 EJB 容器被注入,EJB 容器会处理关闭 EM,我不需要担心这一点。所以我不明白为什么连接有时会被关闭......

有什么帮助吗?

4

0 回答 0