在Spring中正确使用@Transactional

时间:2013-09-05 17:54:33

标签: java spring spring-mvc transactions

我有一个用@Service注释的类。我有一个方法应该更新两个不同的数据源(数据库和内容存储库)。我在服务类的方法中添加了@Transactional。没有任何进一步的定制;两个存储库类(用@Repository注释)是否在同一事务中运行是否正确?

我正在使用JBoss 7.1.1,我在Spring(3.2)配置中有这两行:

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

或者这是在两个不同的交易中运行吗?我想只在服务层方法中没有抛出运行时异常时提交数据。它是从控制器方法(使用@Controller注释的类)调用的。

我会尽快为那个帮我获得Jackrabbit和数据库连接以在同一个交易中运行的人提供500赏金。我正在使用JBoss 7.1.1,Spring 3.2,Jackrabbit 2.6.2 JCA。

1 个答案:

答案 0 :(得分:0)

如果没有任何进一步的自定义,两个存储库类将在不同的事务中运行。

您要找的是Distributed Transaction,有关于herehere的StackOverflow答案。如果您没有在Java EE服务器上运行,那么这里有一个article,它描述了为像Tomcat这样的普通servlet容器设置分布式事务。