当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《在C++和Java之间传播Oracle事务》经验,为你挑选了1个好方法。

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

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

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

我熟悉XA事务,并且我已经完成了JBoss事务管理器的一些工作,但我的谷歌搜索在两个进程之间传播XA事务没有任何好处.

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

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

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



1> Justin Cave..:

Laurent Schneider的博客中有一个例子,它使用Oracle内部的DBMS_XA包来允许多个会话在同一个事务中工作.因此,有可能让Java和C++会话参与同一事务,而无需任何其他协调器.

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

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

推荐阅读
惬听风吟jyy_802
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有