gpt4 book ai didi

java - 在 C++ 和 Java 之间传播 Oracle 事务

转载 作者:IT老高 更新时间:2023-10-28 22:38:48 25 4
gpt4 key购买 nike

我们有一个现有的 C++ 应用程序,我们将逐渐用新的基于 Java 的系统来替换它。在我们完全用 Java 重新实现所有内容之前,我们希望 C++ 和 Java 必须相互通信(RMI、SOAP、消息传递等 - 我们还没有决定)。

现在我的经理认为我们需要 Java 和 C++ 方参与同一个 Oracle DB 事务。这与通常的分布式事务问题有关,但不同于通常的分布式事务问题,即单个进程协调 2 个事务资源,例如数据库和消息队列。

我认为从性能和稳定性的角度来看,跨进程传播事务是一个糟糕的想法,但我仍然会被要求提供解决方案。

我熟悉 XA 事务并且我已经使用 JBoss 事务管理器完成了一些工作,但是我的谷歌搜索并没有发现任何关于在 2 个进程之间传播 XA 事务的好处。

我们在 Java 端使用 Spring,他们的文档明确声明他们不提供任何事务传播帮助。

我们不打算使用传统的 Java EE 服务器(例如:IBM Websphere),它可能支持传播(我找不到任何权威文档)。

非常感谢任何有关解决方案的帮助或指示。

最佳答案

an example on Laurent Schneider's blog使用 Oracle 内部的 DBMS_XA 包来允许多个 session 在同一个事务中工作。因此,可以让 Java 和 C++ session 参与同一个事务,而无需任何类型的额外协调器。

或者,您可以考虑使用 Workspace Manager。这最初旨在支持极其长时间运行的事务(即为提议的开发操作大量空间数据)。本质上,您可以创建一个工作区,在您的情况下,它大致相当于一个命名事务。 Java 和 C++ 代码都可以进入该工作区(从单独的 session 中),并且都可以在该工作区中操作和提交数据。事务完成后,您可以将工作区合并到 LIVE 工作区,这相当于在正常事务中进行提交。

另一方面,我非常同意您的初步评估,即从性能、稳定性、简单性和维护的角度来看,协调流程之间的事务很可能是一个坏主意。另一方面,这很可能是一个合法的业务需求,这取决于 C++ 代码将如何退役(即是否可以以事务可以完全是 Java 或完全是 C++ 的方式替换代码)

关于java - 在 C++ 和 Java 之间传播 Oracle 事务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44005/

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