gpt4 book ai didi

java - 仅使用@Transactional 时,持久性单元未启动

转载 作者:行者123 更新时间:2023-11-30 07:54:25 26 4
gpt4 key购买 nike

我正在使用 Wildfly 10.1.0,我正在尝试将所有 EJB 更改为仅使用 @Transactional 注释,这些注释是自 Jave EE 7 以来提供的(由于 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 没有启动的原因是什么?

最佳答案

What is the reason why the PersistenceUnit is not started, when there are no EJB's available?

原因是在 JEE 应用程序中,持久性上下文(包括数据库连接、持久性单元和其他东西)是由 EJB 容器启动和管理的:

enter image description here

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

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

关于java - 仅使用@Transactional 时,持久性单元未启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44068120/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com