2013-09-05 49 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容器设置分布式事务。