我正在使用EntityManagers对数据库执行操作。但是,这种情况发生在20%的情况下,EntityManager获得的连接已关闭,我无法执行任何操作。 EntityManager是打开的,因为我检查了它,但连接已关闭。
代码是这样的:
我有一个Session 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容器处理关闭EM,如果它被注入,我不需要担心。所以我不明白为什么连接有时会被关闭......
任何帮助?