- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我需要管理我的应用程序中的多个资源,例如 jms 和 database
在查看可以管理多个资源的事务管理器时,我遇到了 2 个事务管理器 JtaTransactionManager 和 ChainedTransactionManager,它们几乎声称他们可以管理多个资源。
谁能解释它们的主要区别是什么?我什么时候应该使用哪一个?
最佳答案
如文档所述: ChainedTransactionManger doc :
PlatformTransactionManager implementation that orchestrates transaction creation, commits and rollbacks to a list of delegates. Using this implementation assumes that errors causing a transaction rollback will usually happen before the transaction completion or during the commit of the most inner PlatformTransactionManager. The configured instances will start transactions in the order given and commit/rollback in reverse order, which means the PlatformTransactionManager most likely to break the transaction should be the last in the list configured. A PlatformTransactionManager throwing an exception during commit will automatically cause the remaining transaction managers to roll back instead of committing.
这意味着您可以通过向其传递多个事务管理器来创建 ChainedTransactionManager。如果一个事务管理器发生异常,则会按指定的相反顺序为所有事务管理器生成回滚
PlatformTransactionManager implementation for JTA, delegating to a backend JTA provider. This is typically used to delegate to a Java EE server's transaction coordinator, but may also be configured with a local JTA provider which is embedded within the application. This transaction manager is appropriate for handling distributed transactions, i.e. transactions that span multiple resources, and for controlling transactions on application server resources (e.g. JDBC DataSources available in JNDI) in general. For a single JDBC DataSource, DataSourceTransactionManager is perfectly sufficient, and for accessing a single resource with Hibernate (including transactional cache), HibernateTransactionManager is appropriate, for example.
您可以使用此事务管理器来管理多个资源的分布式事务
关于java - JtaTransactionManager 和 ChainedTransactionManager 之间的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33202841/
我将使用数据库和 JMS 队列,因此我决定使用 JTATransactionManager(多个资源)。 我正在使用 Spring Framework 3.2.3.RELEASE Hibernate
我正在使用多个数据库进行设置,技术堆栈的 spring 和 hibernate 在 tomcat 6 上运行。跨数据库的事务不是必需的,每个数据库都有自己的数据源、sessionFactory 和 t
我想知道 Spring 如何为给定的带注释的事务申请资源。假设我有 3 个启用 XA 的数据源 D1、D2 和 D3。有时事务可能发生在 D1 和 D2 之间,有时可能发生在 D2 和 D3 之间,有
我正在寻找一种通过 Spring/JTA 将两个数据源的 CRUD 放入一个事务中的方法,但有以下问题: 数据源由org.apache.commons.dbcp.BasicDataSource而不是J
我在 Tomcat7 中使用 spring3 和 Hibernate4。 我必须使用 JTATransactionManager 并且我有以下配置。 在上面的配置中,java:com
我正在使用 Spring Data JPA (SDJ),在我的集成测试期间,我遇到了一个奇怪的情况——我可能错误地配置了一些东西,但我看不到那可能是什么。 简而言之 - SDJ 似乎根本无法调用 Sp
更新: 我正在使用 Bitronix TM 对其进行测试,它可以完美回滚,因此问题出在 JBoss TM (arjuna) 或我的配置中。 更新 2: 看起来事务不是全局的,我尝试了不同的数据源,Bi
我需要管理我的应用程序中的多个资源,例如 jms 和 database 在查看可以管理多个资源的事务管理器时,我遇到了 2 个事务管理器 JtaTransactionManager 和 Chained
我正在开发一个使用 Spring Integration 框架和atomikos 进行分布式事务构建的项目。最近,我们一直在尝试运行集成测试,以验证消息是否正确通过我们的系统发送。在执行其中一项集成测
Spring JtaTransactionManager 和 HibernateTransactionManager 之间有什么区别,何时在我的应用程序中使用它们?我知道 HibernateTrans
我想集成 Spring 和 Hibernate 并使用 JTA 来管理事务。我还想将事务处理委托(delegate)给 App 服务器,在我的例子中是 JBoss。我对 Spring 中“transa
我正在使用 Spring 并与 hibernate 4 集成作为持久化提供程序,这里我尝试的是进行增删改查操作关于学生实体, 我的所有选择操作都工作正常,但添加和更新操作不起作用, 我的 persis
我需要使用org.springframework.transaction.jta.JtaTransactionManager作为SpringService中的TransactionManager。但是
我正在尝试将 JtaTransactionManager 与 Spring Batch 一起使用。 transactionManager 是依赖项目中已经定义好的 Jta 事务管理器。 这是我的 Sp
我是一名优秀的程序员,十分优秀!