gpt4 book ai didi

java - 同一事务中的多个资源提供者 Spring

转载 作者:行者123 更新时间:2023-12-02 06:46:43 26 4
gpt4 key购买 nike

我使用 Jackrabbit 来存储文件(数据存储),并使用 Hibernate 来存储几乎所有其他内容。我不知道很多事务等,但我知道我想要这两个事务的全局事务,以便异常回滚所有内容。目前数据库内容已回滚,但 Jackrabbit 没有。

我正在使用 Spring 3.2。我已将 Jackrabbit JCA 适配器部署到 JBoss (7.1.1)。我在配置 xml 中有这些行:

<bean id="txManager"
class="org.springframework.transaction.jta.JtaTransactionManager"></bean>

<tx:annotation-driven transaction-manager="txManager"
proxy-target-class="true"/>

但这似乎还不够。有人可以给我一些线索,告诉我需要阅读什么/在哪里可以找到这方面的信息吗?如果资源提供者之一发生问题,我需要回滚所有内容。

最佳答案

这设置起来相当棘手。一个问题是 spring 自动使用“transactionManager”作为默认名称,这导致了问题。不过,这绝对值得付出努力,因为同步不匹配的数据源很快就会成为一场噩梦。

这是我的示例配置,对我有用。当然,现在我们可能会使用 @Configuration 而不是 xml。这可以使用 Spring Data、JTA、带 XA 驱动程序的 MySQL 和 Neo4j 来实现。 Neo4j具体的东西已经省略了。

Spring Data 也可以在这里为您提供帮助。

这是一个入门...

<tx:annotation-driven transaction-manager="xaTransactionManager" />

<bean id="xaTransactionManager" class="some.type.of.ChainedTransactionManager">
<constructor-arg>
<list>
<ref bean="jpaTransactionManager"/>
<ref bean="otherTransactionManager"/>
</list>
</constructor-arg>
</bean>

<bean id="jpaTransactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="localContainerEntityManagerFactoryBean"/>
</bean>

<bean id="otherTransactionManager" class="other.type.of.jta.TransactionManager">
<property name="transactionManager" ref="otherTransactionManagerService"/>
</bean>

关于java - 同一事务中的多个资源提供者 Spring,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18558043/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com