gpt4 book ai didi

Spring JTA 事务管理器问题

转载 作者:行者123 更新时间:2023-12-04 16:32:28 29 4
gpt4 key购买 nike

我们正在使用 jboss 管理的 EntityMangerFactory 使用以下 spring bean

<jee:jndi-lookup id="entityManagerFactory" jndi-name="persistence-units/myPU"/>

现在在我们的 spring bean 中,我们使用 @PersistenceContext 来获取实体管理器,它工作正常。我想要的是如何告诉 spring 获取 jbos jta 服务提供的事务管理器并在我的 dao 中使用它?

如果我像下面这样定义 txmanager,那么 spring 是否可以使用 @Transaction 注释来控制管理事务?
<bean id="txManager" class="org.springframework.transaction.jta.JtaTransactionManager">
<property name="transactionManagerName" value="java:/TransactionManager"/>
<property name="userTransactionName" value="UserTransaction"/>
</bean>

如果是这样,那么 spring 什么时候提交事务并回滚它?

谢谢

最佳答案

几乎 - 你应该叫它 transactionManager而不是 txManager .您可以覆盖它查找的名称,但更容易遵守约定。

另外,JtaTransactionManager通常会自动检测各种 JNDI 名称,您不需要手动指定它们。

更好的是,不要声明 JtaTransactionManager完全,只需使用 <tx:jta-transaction-manager/> , 和 Spring should do the right thing .

所以,你只需要:

<context:annotation-driven/>
<tx:jta-transaction-manager/>

一旦到位,任何用 @Transactional 注释的 bean将由 Spring 管理它们的事务边界,例如当带注释的方法退出时提交或回滚事务( see docs )。

关于Spring JTA 事务管理器问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5722913/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com