首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在spring boot中为jms添加事务管理器?

如何在spring boot中为jms添加事务管理器?
EN

Stack Overflow用户
提问于 2021-09-20 15:21:53
回答 1查看 365关注 0票数 1

我在我的应用程序中使用了Spring Boot & Spring Data JPA。现在我正致力于将JMS集成到我的应用程序中。添加以下代码后,我将在查询数据库时看到一个错误。

代码语言:javascript
复制
@Configuration
public class ActiveMQProducerConfig {
   @Bean
   public PlatformTransactionManager createTransactionManager(ConnectionFactory connectionFactory) {
      return new JmsTransactionManager(connectionFactory);
   }
}
代码语言:javascript
复制
No bean named 'transactionManager' available: No matching PlatformTransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match!]

据我所知,这个错误是因为应用程序找不到JPA的事务管理器,这应该是由我的JmsTransactionManager配置引起的。有人能帮我吗?

EN

回答 1

Stack Overflow用户

发布于 2021-09-20 17:04:51

JmsTransactionManager只能管理单个JMS连接工厂上的事务。因此,例如,如果您有JMS连接工厂,并使用该工厂创建一个或多个JMS连接,那么您可以使用JmsTransactionManagerJmsTransactionManager不会对你的JPA有所帮助。

您是否使用了合适的JTA事务管理器?如果您在同一事务上下文中有一个JMS事务和一个JPA事务,那么您将需要它来协调事务。您说Spring Boot自动包含对JPA事务的支持。这不是我的经验。

如果您没有配置适当的JTA事务管理器,我建议您将其中一个添加到pom.xml文件中:

代码语言:javascript
复制
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jta-narayana</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-jta-bitronix</artifactId                
    </dependency>

这两个启动器都会将JTA事务管理器添加到Spring Boot项目中,并将JTA事务管理器作为PlatformTransactionManager连接进来。默认情况下,所有组件都会查找PlatformTransactionManager。您不应该帮助Spring Boot找到您的事务管理器或创建您自己的事务管理器。您应该确保使用适当的Spring Boot starter将JTA事务管理器配置为PlatformTransactionManager

第一个启动器包括Arjuna事务管理器。将日志记录配置为:

代码语言:javascript
复制
<logger name="com.arjuna" level="TRACE" additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

您将从Arjuna获得一些有用的日志记录。

或者:

代码语言:javascript
复制
<logger name="bitronix" level="TRACE" additivity="false">
    <appender-ref ref="STDOUT" />
</logger>

用于Bitronix事务管理器。

我希望这能对你有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69256993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档