我有一个基于 Maven 的 Java EE 项目,应该在 GlassFish v3 上运行。有一个注入 EJB 服务的 JSF ManagedBean。ManagedBean 在发生一些 JPA 操作(创建新实体对象、持久化、刷新)的按钮单击时调用注入的 EJB 方法之一。当被EntityManager.flush()
调用时,它会引发异常:
Caused by: javax.persistence.TransactionRequiredException: Exception
Description: No transaction is currently active
数据源是具有 JTA 事务类型的 jta 数据源(在 persistence.xml 中定义)。
我已经找到了解决方案,但由于部署问题,它并不令人满意。如果我将下一行代码放入persistence.xml,那么它可以毫无问题地运行:
<property name="eclipselink.target-server" value="SunAS9"/>
由于这个原因,我假设这是一个部署问题,当 eclipselink 无法识别 JTA 管理器时。
任何建议将不胜感激,谢谢!
更新:
@MRalwasser:这是完整的堆栈跟踪。(对不起,我不得不删除真正的包名,它现在是 masked.package.name)pastebin 上的堆栈跟踪
@Chris:对不起,我忘了提,GeneriDao 类通过工厂方法创建实体管理器,而不是通过依赖注入。