我在Websphere App Server中通过JMS使用Oracle Advanced Queues。
有谁知道以下两个属性有什么影响: -
- oracle.jms.useEmulatedXA
- oracle.jms.useNativeXA
我在一些博客和快速入门指南中看到过,通常用“Add -Doracle.jms.useEmulatedXA = false -Doracle.jms.useNativeXA = true to JAVA_PROPERTIES变量”这句话的句子,没有任何解释他们做了什么: -
e.g。
我很好奇这两个属性实际上做了什么,以及设置它们的含义是什么,即使它们似乎对我们的应用程序没有任何影响,无论我们是否设置它们。
谷歌搜索没有给出任何答案,有没有人知道他们实际做了什么?
答案 0 :(得分:1)
希望这个链接能够详细解释:http://bit.ly/bsl9Un相关位包括以下内容......
模拟数据源是数据源 模仿JTA的XA协议 交易。仿真数据源 提供OC4J缓存,汇集和 Oracle数据的Oracle JDBC扩展 源。历史上,模拟数据 因为许多人需要资源 JDBC驱动程序未提供XA 能力。今天即使最多 JDBC驱动程序确实提供了XA 能力,仍有案例 模仿XA是优选的(例如 作为不需要的交易 两阶段提交。)
从模拟获得的连接 数据源非常快, 因为连接模拟XA API没有提供完整的XA全局 交易支持。特别是, 模拟数据源不支持 两阶段提交。 Oracle建议 您使用模拟数据源 本地交易,或当你的 应用程序使用全局事务 无需两阶段提交。
和...
非模拟数据源提供完整 (无模拟)JTA服务,包括 两阶段提交功能 全球交易。无模拟数据 来源提供汇集,缓存, 分布式交易功能, 和供应商JDBC扩展(目前, 只有Oracle JDBC扩展)。对于 关于限制的信息 两阶段提交,请参阅第7章“Java 交易API“。
Oracle建议您使用 非模拟数据源 分布式数据库通信 恢复和可靠性。 Nonemulated 数据源共享物理 逻辑连接的连接 同一个用户使用相同的数据库。
因此,设置模拟XA时发生的情况是,您的应用认为它正在获取XA,但调用已优化或转换为单阶段提交。指定非模拟XA时,您将获得完整的XA功能。无论哪种方式,应用程序都没有意识到。