术语“jta-datasource”和“resouce-local datasource”对我来说有点模糊。
我猜你实际上指的是 和 元素。总之:jta-datasource
non-jta-datasource
- 如果持久性单元的事务类型是 JTA,则该元素用于声明将用于获取连接的 JTA 数据源的 JNDI 名称。这是常见的情况。
jta-datasource
- 如果持久性单元的事务类型是资源本地的,那么应该使用 来声明非 JTA 数据源的 JNDI 名称。
non-jta-data-source
- 同一数据库可以称为 jta 数据源或资源本地数据源
这是正确的。我在上面没有提到这一点,但一些提供商甚至允许同时声明a和a,并使用后者通过非JTA连接优化读取(即不会与正在进行的JTA事务相关联)。jta-datasource
non-jta-datasource
- 如果被提及为jta数据源,那么bean /其他类可以使用JTA。因此,用户事务接口。
第一部分是正确的,最后一部分不完全是正确的。来自 EJB 3.0 规范的第 13.3.4 节 使用容器管理的事务划分的企业 Bean:
企业 Bean 的业务方法 [...] 不得尝试获取或使用该接口。
javax.transaction.UserTransaction
第 16.12 节用户事务接口:
容器不得使接口可供不允许使用此接口的企业 Bean 使用。
UserTransaction
换句话说,该接口不可用于 CMT 企业 Bean。UserTransaction
- 如果数据源是资源本地的,则无法使用 CMT/BMT
这里的措辞有点令人困惑,但我想说这不是严格正确的。来自 JPA 1.0 规范, § 5.5 控制事务:
应用程序管理的实体管理器可以是 JTA 实体管理器,也可以是资源本地实体管理器。
...
JTA 实体管理器和资源本地实体管理器都需要在 Java EE Web 容器和 EJB 容器中得到支持。在 EJB 环境中,通常使用 JTA 实体管理器。
第 6.2.1.2 节事务类型
该属性用于指定实体管理器工厂为持久性单元提供的实体管理器必须是 JTA 实体管理器还是资源本地实体管理器。此元素的值为 或 。事务类型的 JTA 假定将提供 JTA 数据源 — 由元素指定或由容器提供。通常,在 Java EE 环境中,a 假定将提供非 JTA 数据源。在 Java EE 环境中,如果未指定此元素,那么缺省值为 JTA。
transaction-type
JTA
RESOURCE_LOCAL
jta-data-source
transaction-type
RESOURCE_LOCAL
因此,您可以使用应用程序托管的实体管理器,它可以是资源本地实体管理器(在这种情况下,您必须注入 a 才能从中获取 EM),并且它不会成为 JTA 事务的一部分。请参阅此(非常有趣)讨论。EntityManagerFactory
- 如果作为资源本地数据源提及,则事务不能识别 JTA。代码可以使用 EntityTransaction 接口,但不能使用 UserTransaction 接口
同样,措辞有点令人困惑,但我会说这是正确的。
-
如何使用Java中的RESTful Web服务获取远程/客户端IP地址? 我已经在我的项目中编写了Rest Web服务。Web服务调用可能来自不同 machine.so 我需要通过REST Web服务找出IP地址。 从这个请求.getRemoteAddr()使用这个。 但是我不能使用getRemoteAddr()。因为我的请
-
从包含大量文件的zip文件中提取1文件的最快方法是什么? 我尝试了但它们也缺少一些东西。 LZMA SDK不提供一种如何使用的文档/教程,这非常令人沮丧。没有 javadoc。 虽然7z jbinding没有提供一种简单的方法来只提取1个文件,但是,它只提供了提取zip文件
-
输入/输出流在销毁时是否关闭? Java 中的 InputStreams 和 OutputStreams 是否在销毁时关闭()?我完全理解这可能是不好的形式(特别是在C和C++世界中),但我很好奇。 另外,假设我有以下代码: 无名的FileInputStream是否在p.load
-
Java 程序中的字符串大小是否有任何限制? 我有一个字符串定义为 字符串 xx 我可以分配的字符数是否有任何限制? 2) 我正在将用户输入分配给此字符串 xx。70%的人只说一个字。有时他们给出一个大句子,所以想知道可
-