1

我有一个多域应用程序。每个域都是一个单独的 Spring 应用程序,提供服务并使用 JPA 访问它自己的数据库。我没有使用任何 Java EE 容器,只是使用 Jetty 将域作为 Web 应用程序运行。在我的项目中,要求能够在远程机器上安装这些域,这样我就不能将组件绑定到单个 JVM。我正在寻找的是一种通过网络在这些域之间进行可靠交易的方法。

例如。考虑到我们有一个计费和用户帐户处理域,我喜欢使新用户注册操作原子化,包括以下步骤:

  • 通过调用用户域的函数创建一个用户帐户
  • 通过调用计费域的函数记录用户的注册费用

如果其中一个步骤失败,我预计两个域的数据库都会回滚。

我目前正在根据这篇文章试用 JTA + Spring + Atomikos ,但是这只考虑了一个 JVM。我的目标是以这样的方式设置 Atomikos,如果在其自己的 JVM 中运行的域接受 JMS 消息,该消息是在调用者域中启动的 JTA 事务的一部分,并且此侦听器操纵域的数据库,则创建的数据库事务将参与JTA 事务也是如此。这样,对本地数据库所做的更改仅在 JTA 协调器提交全局事务时才提交,而不是在 onMessage 函数结束时本地提交。

这就是我目前停留的地方,因为我认为 Atomikos 可以单独实例化,而不仅仅是像上面的示例所示那样嵌入,并且 Spring 应用程序可以配置为使用此共享事务管理器在事务中注册资源。但我找不到任何教程,仅用于本地事务管理。

我正在寻找一些建议,或者 - 甚至更好 - 一个代码示例,它显示了我如何实现这一点。Atomikos 不是必需的,但我需要一个不付费的非 Java EE 解决方案。

4

1 回答 1

0

我来自阿托米科斯。我们提供此功能,但可惜不是我们的开源/免费版(而是付费版)的一部分。

然而,我们的价格相当实惠(请查看我们的网站了解详情)。

希望这可以帮助,

盖伊

于 2014-07-31T15:26:17.037 回答