2013-09-05 81 views
3

我有一個類是用@Service註釋的。我有一個方法應該更新兩個不同的數據源(數據庫和內容存儲庫)。我在服務類中添加了@Transactional。沒有任何進一步的定製;這兩個存儲庫類(用@Repository註釋)在同一事務中運行是否正確?正確使用@Transactional在春季

我使用JBoss 7.1.1,我有這兩條線路在春節(3.2)配置:

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

或者處於不同的事務此運行?我只想在服務層方法中沒有引發運行時異常時才提交數據。它是從控制器方法調用的(類注有@Controller)。

我會盡快給500人添加500金幣,以幫助我獲得Jackrabbit和數據庫連接以在同一事務中運行。我正在使用JBoss 7.1.1,Spring 3.2,Jackrabbit 2.6.2 JCA。

+0

你的配置應該足夠了,因爲spring會從jndi中獲取所需的bean,但JTA通常是PITA。我只是建議你用數據源和應用程序崩潰來測試部分失敗,因爲JTA事務不容易恢復,你可能需要執行一些手動操作來從事務管理器和數據庫中刪除部分事務。 – Augusto

回答

0

沒有任何進一步的定製,兩個存儲庫類將運行在不同的事務中。

你在找什麼叫做Distributed Transaction,有關於herehere的StackOverflow答案。如果您沒有在Java EE服務器上運行,那麼這裏是一個article,它描述了爲諸如Tomcat之類的普通servlet容器設置分佈式事務。