2013-09-01 38 views
0

我使用Jackrabbit来存储文件(数据存储)和Hibernate几乎所有的东西。我不知道很多交易等,但我知道我想要这两个全局交易,以便例外回滚一切。目前数据库的东西被回滚,但Jackrabbit不是。同一个事务中的多个资源提供者Spring

我使用的是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"/> 

但是,这似乎是不够的。有人能给我提供一些我需要阅读的信息/在哪里可以找到关于这方面的信息?如果某个资源提供者出现问题,我需要回滚所有内容。

回答

2

这是非常棘手的设置。一个问题是春天自动使用'transactionManager'作为导致问题的默认名称。尽管同步不匹配的数据源很快会变成一场噩梦,但这绝对值得。

这是我的示例配置,为我工作。当然,现在我们可能会使用@Configuration而不是xml。这使用Spring Data,JTA,MySQL和XA驱动程序以及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> 
+0

什么键入将在'ChainedTransactionManager'是什么?它是Spring的一个类还是什么?我在哪里可以找到? – LuckyLuke

+0

而且,我并不擅长交易,但这不是使用JBoss作为交易经理的权利吗?春天我该怎么做?......我在这里做了什么?我不知道我明白了。 – LuckyLuke

+0

以下链接可能有助于解释一点:http://www.javaworld.com/javaworld/jw-04-2007/jw-04-xa.html – Thierry

相关问题