我想在我的Java应用程序中使用Java Transaction服务进行分布式事务管理。
我有3个不同的数据库,我必须使用3个不同的Connection对象连接到这些数据库。我想在3个数据库中的每一个中插入某些数据。 我的要求是应保持原子性。因此,要么将数据插入所有3个数据库中,要么不应将其插入任何数据库中。 我在网上搜索这种交易,我得到了Java Transaction服务。 我可以在这里找到它的API http://java.sun.com/products/jts/javadoc/index.html 但我仍然没有得到如何实现使用它的交易。有人可以向我提供Java Transaction Service示例代码或教程的链接。
先谢谢, Aniket Kedari
答案 0 :(得分:3)
有些观点:
因此,假设您决定使用Java Application Server,我建议使用Spring,EJB 3.0或类似的东西进行数据库交互,因为它们允许您执行声明式事务,这比自己手动编写事务逻辑要简单得多。
这是Spring关于交易的文档的link。
答案 1 :(得分:0)
您需要搜索的主题是XA事务。
您需要了解的内容包括:
http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html
分布式事务处理 系统旨在促进 跨越异构的事务, a中的事务感知资源 分布式环境。运用 分布式交易 应用程序可以完成任务 从邮件中检索邮件 排队并更新一个或多个 单个事务中的数据库 单位坚持ACID(原子性, 一致性,隔离性和耐用性) 标准。本文概述了一些内容 分布式的用例 可以使用交易(XA) 应用程序如何实现 使用JTA进行事务处理 以及最好的品种 技术。主要关注点 使用Spring作为服务器框架和 如何整合各种JTA 无缝实现 企业级分布式 交易。
答案 2 :(得分:0)
对于使用单个数据库的简单情况,您不必担心这种情况,JDBC和数据库自身功能的组合就足够了。你的情况更复杂。需要有一个事务管理器,它负责管理跨数据库管理分布式事务的所有细节。所以你需要一个提供JTA apis的实现。
虽然你原则上可以自己开发,但这是一项非常特殊的工作,所以实际上你需要使用现有的实现。这是您使用Java EE应用程序服务器时获得的一件事。
因此,去获取众多可用的Java EE App服务器之一,有很好的零成本服务器。
WebSphere Community Edition是IBM的,JBOSS是一个广泛使用的服务器,Glassfish可以从Sun获得。
您选择哪一个,请确保将JDBC连接池用于JDBC连接(非常容易),我建议使用简单的会话Bean(在EJB 3中这也很容易)来标记您的事务。
总的来说,您需要编写大约4行新代码(或注释)。你现在拥有的和“宾果!”你正在进行2PC交易。获取App Server并学习如何使用这些设施有一点学习曲线,但如果您需要Java分布式事务,则需要基础结构服务和编程框架,因此某些级别的学习是不可避免的。