【发布时间】:2010-12-07 21:38:58
【问题描述】:
让我先描述一下当前的架构:
应用程序A是运行在JBOSS中的java应用程序,有自己的数据库(mssql)。
应用程序 B 是一个在 Windows 机器上运行的 COM+ 应用程序,它也由它自己的数据库 (mssql) 支持。
对于某些业务需求,应用程序 A 必须调用应用程序 B。为此,在与应用程序 A 相同的机器(即 JBOSS 机器)上安装了 COM 代理。 JNI 接口允许我们从应用程序 A-->B 进行调用。
这就是我们今天所拥有的,而且效果很好。现在,出现了一个新的业务需求,需要实现如下两阶段提交功能:
将创建一个新的应用程序 C(可能是一个 .net 应用程序),该应用程序将由其自己的数据库支持。应用程序 C 将放在第三台服务器上(不在我们的站点中)。
应用程序 C 在事务中调用应用程序 A。应用程序 A 应该在考虑了嵌入式业务逻辑之后执行一些操作。操作包括对应用程序 A 数据库的写入和对应用程序 B 的调用。应用程序 B 执行附加操作(对应用程序 B 数据库)。应用程序 C 根据收到的反馈更新其数据库。现在,如果所有操作都成功,则将更改提交到数据库,否则操作将回滚。
问题很简单(我认为答案更复杂)。考虑到支持每个应用程序的不同技术,这是否可行?我完全理解,如果所有应用程序都是用 .Net 或 COM+ 应用程序编写的,这是可行的。在这一点上,用另一种技术替换 Java 组件不是一个可行的选择。有什么想法吗?
我们检查了 JNBridge,但我认为它不能提供我们想要的。如果应用程序 C 不是问题,那就没问题了。
欢迎提出任何想法/解决方案。您认为最好的选择是什么?
【问题讨论】: