【问题标题】:Java Transaction serviceJava 事务服务
【发布时间】:2013-07-18 22:19:11
【问题描述】:

我想在我的 Java 应用程序中使用 Java Transaction 服务进行分布式事务管理。

我有 3 个不同的数据库,我必须使用 3 个不同的 Connection 对象来连接它们。我想在 3 个数据库中的每一个中插入某些数据。 我的要求是应该保持原子性。因此,要么数据应该插入所有 3 个数据库,要么不应该插入任何数据库。 我在网上搜索了这种交易,我得到了 Java Transaction 服务。 我可以在这里找到它的 API http://java.sun.com/products/jts/javadoc/index.html 但我仍然不知道如何使用它来实现交易。谁能给我提供 Java 事务服务的示例代码或教程的链接。

提前致谢, Aniket Kedari

【问题讨论】:

    标签: java transactions


    【解决方案1】:

    几点:

    1. XA 不是解决此问题的唯一可能解决方案,尽管它可能是最简单的,因为围绕它的工具已经成熟(搜索 CAP 定理和 BASE - 基本可用的软状态最终一致)。
    2. XA 事务具有故障模式,您仍然可以得到参与数据库之间的不一致窗口。
    3. 您没有说明您正在使用哪个数据库 - 可能其中一个或所有数据库不支持 XA 事务。
    4. 您不太可能想在 Java 中使用原始 JTS/JTA API,而是可以使用任何知名的 Java 应用程序服务器,因为它们包含事务管理器(使用 JTS/JTA)。

    因此,假设您决定使用 Java 应用程序服务器,我建议您使用 Spring、EJB 3.0 或类似的东西来进行数据库交互,因为它们将允许您执行声明性事务,这比自己手动编写事务逻辑要干净得多。

    这是 Spring 的事务文档link

    【讨论】:

      【解决方案2】:

      您需要搜索的主题是 XA 交易。

      你需要知道的都在这里了:

      http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html

      分布式事务处理 系统旨在促进 跨越异构的交易, 事务感知资源 分布式环境。使用 分布式事务,一个 应用程序可以完成任务,如 从消息中检索消息 排队并更新一个或多个 单个事务中的数据库 单位遵守酸(原子性, 一致性、隔离性和耐用性) 标准。本文概述了一些 分布的用例 交易(XA)可以使用和 应用程序如何实现 使用 JTA 的事务处理 连同最好的品种 技术。主要关注点是 使用 Spring 作为服务器框架和 如何整合各种 JTA 无缝实现 企业级分布式 交易。

      【讨论】:

      【解决方案3】:

      对于使用单个数据库的简单情况你不必担心这一点,JDBC 和数据库自身能力的结合就足够了。你的情况比较复杂。需要有一个事务管理器,它负责管理跨数据库的分布式事务的所有细节。所以你需要一个提供 JTA api 的实现。

      虽然原则上您可以自行开发,但这是一项非常特殊的工作,因此实际上您需要使用现有的实现。这是您在使用 Java EE 应用程序服务器时会遇到的事情之一。

      所以,去购买众多可用的 Java EE 应用服务器之一吧,那里有不错的零成本。

      WebSphere Community Edition 是 IBM 的,JBOSS 是广泛使用的服务器,Glassfish 是 Sun 提供的。

      无论您选择哪一个,请确保您使用他们的 JDBC 连接池进行 JDBC 连接(非常容易做到),我建议使用简单的 Session Bean(在 EJB 3 中这也很容易)来标记您的事务。

      总的来说,您需要编写大约 4 行新代码(或注释)。超过你现在拥有的和“宾果游戏!”你正在做 2PC 交易。在启动应用服务器和学习如何使用这些设施方面存在一些学习曲线,但如果您需要 Java 分布式事务,则需要基础设施服务和编程框架,因此一定程度的学习是不可避免的。

      【讨论】:

        猜你喜欢
        • 2023-03-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-11-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-21
        相关资源
        最近更新 更多