【问题标题】:Persistence Unit not started, when only using @Transactional仅使用 @Transactional 时未启动持久性单元
【发布时间】:2017-10-19 11:17:00
【问题描述】:

我正在使用 Wildfly 10.1.0,我正在尝试将所有 EJB 更改为仅使用自 Jave EE 7 以来提供的 @Transactional 注释(由于 JTA 1.2)。问题是当我的项目有 0 个 EJB 时,容器不会启动 PersistenceUnit。如果我添加一个只有注释 @Stateless 的空类,那么它会再次起作用。

这是我的 persistence.xml

<persistence version="2.1">
  <persistence-unit name="Storage-PU" transaction-type="JTA">
    <jta-data-source>java:/PostGreDS</jta-data-source>
    <class>SomeEntity<class>
    <exclude-unlisted-classes>false</exclude-unlisted-classes>
  </persistence-unit>
</persistence>

当没有可用的 EJB 时,PersistenceUnit 没有启动的原因是什么?

【问题讨论】:

  • 还有什么可以用的吗?

标签: java jpa ejb jta java-ee-7


【解决方案1】:

当没有可用的 EJB 时,PersistenceUnit 没有启动的原因是什么?

原因是在 JEE 应用程序中,持久性上下文(包括 DB 连接、持久性单元等)由 EJB 容器启动和管理:

因此,仅在 Web 层使用 @Transactional 注释 bean 方法不足以启动 Persistence Context。请注意,事务也由 EJB 容器管理,而不是 Web 容器。

有关 JEE 架构的更多详细信息,请参阅 Java Platform, Enterprise Edition: The Java EE Tutorial

【讨论】:

    猜你喜欢
    • 2013-02-15
    • 2015-01-27
    • 2011-10-22
    • 2013-09-06
    • 2012-11-09
    • 1970-01-01
    • 2019-06-09
    • 1970-01-01
    • 2021-02-17
    相关资源
    最近更新 更多