1

我在 Websphere App Server 中通过 JMS 使用 Oracle 高级队列。

有谁知道以下两个属性有什么影响:-

 - oracle.jms.useEmulatedXA
 - oracle.jms.useNativeXA

我在一些博客和快速入门指南中看到过,通常是在“将 -Doracle.jms.useEmulatedXA=false -Doracle.jms.useNativeXA=true 添加到 JAVA_PROPERTIES 变量”的句子中,没有任何解释它们的含义做:-

例如

我很好奇这两个属性实际上做了什么,以及设置它们的含义是什么,即使它们似乎对我们的应用程序没有任何影响,无论我们是否设置它们。

谷歌搜索没有给出任何答案,有没有人知道他们实际上在做什么?

4

1 回答 1

1

希望这个链接能详细解释:http ://bit.ly/bsl9Un 相​​关位包括以下...

模拟数据源是模拟 JTA 事务的 XA 协议的数据源。模拟数据源为 Oracle 数据源提供 OC4J 缓存、池和 Oracle JDBC 扩展。从历史上看,模拟数据源是必要的,因为许多 JDBC 驱动程序不提供 XA 功能。今天,尽管大多数 JDBC 驱动程序确实提供了 XA 功能,但仍然存在首选模拟 XA 的情况(例如不需要两阶段提交的事务。)

从模拟数据源获得的连接非常快,因为这些连接模拟 XA API 而不提供完整的 XA 全局事务支持。特别是,模拟数据源不支持两阶段提交。Oracle 建议您将模拟数据源用于本地事务,或者当您的应用程序使用全局事务而不需要两阶段提交时。

和...

非模拟数据源提供完整(非模拟)JTA 服务,包括用于全局事务的两阶段提交功能。非模拟数据源提供池、缓存、分布式事务功能和供应商 JDBC 扩展(目前,只有 Oracle JDBC 扩展)。有关两阶段提交的限制的信息,请参阅第 7 章,“Java 事务 API”。

Oracle 建议您使用非模拟数据源来实现分布式数据库通信、恢复和可靠性。非模拟数据源为同一用户共享到同一数据库的逻辑连接的物理连接。

因此,当您设置模拟 XA 时发生的情况是,您的应用程序认为它正在获取 XA,但调用已优化或转换为单阶段提交。当您指定非模拟 XA 时,您将获得完整的 XA 功能。无论哪种方式,该应用程序都没有意识到。

于 2010-04-27T02:10:30.303 回答