2013-09-01 32 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

相關問題