我有一个要求,我们创建一个 Statelebean,它在 EJB3 环境中创建一个容器管理的 EntityManager 实例(使用 @PersistenceContext)。 在创建的这个无状态 bean 中,我们创建了在特定时间间隔执行的线程。该线程将运行数月。 我怀疑从容器(使用 CMP)获取的单个 EntityManager 实例是否可以在整个生命周期(> 1yrs)中使用。
最佳答案
对于EntityManager的生命周期:我认为这更多是数据库连接生命周期的问题。在这种情况下,当 JPA 提供程序检测到连接超时时,如果您使用 autoReconnect=true
配置 JDBC 连接字符串,您会期望构建另一个连接。此外,您还应该寻找设置较长超时的可能性。
另一方面,您可能会忽略在 EJB 中不允许打开新线程。就您而言,当涉及托管实体(在不同线程中更改)和事务问题时,您会遇到一些问题。相反,我会使用 Timer Service .
关于jpa - Entitymanager实例的生命周期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19174686/