我正在使用 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,我不需要担心这一点。所以我不明白为什么连接有时会被关闭......
有什么帮助吗?