我在我的应用程序中使用了Spring Boot & Spring Data JPA。现在我正致力于将JMS集成到我的应用程序中。添加以下代码后,我将在查询数据库时看到一个错误。
@Configuration
public class ActiveMQProducerConfig {
@Bean
public PlatformTransactionManager createTransactionManager(ConnectionFactory connectionFactory) {
return new JmsTransactionManager(connectionFactory);
}
}No bean named 'transactionManager' available: No matching PlatformTransactionManager bean found for qualifier 'transactionManager' - neither qualifier match nor bean name match!]据我所知,这个错误是因为应用程序找不到JPA的事务管理器,这应该是由我的JmsTransactionManager配置引起的。有人能帮我吗?
发布于 2021-09-20 17:04:51
JmsTransactionManager只能管理单个JMS连接工厂上的事务。因此,例如,如果您有JMS连接工厂,并使用该工厂创建一个或多个JMS连接,那么您可以使用JmsTransactionManager。JmsTransactionManager不会对你的JPA有所帮助。
您是否使用了合适的JTA事务管理器?如果您在同一事务上下文中有一个JMS事务和一个JPA事务,那么您将需要它来协调事务。您说Spring Boot自动包含对JPA事务的支持。这不是我的经验。
如果您没有配置适当的JTA事务管理器,我建议您将其中一个添加到pom.xml文件中:
<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事务管理器。将日志记录配置为:
<logger name="com.arjuna" level="TRACE" additivity="false">
<appender-ref ref="STDOUT" />
</logger>您将从Arjuna获得一些有用的日志记录。
或者:
<logger name="bitronix" level="TRACE" additivity="false">
<appender-ref ref="STDOUT" />
</logger>用于Bitronix事务管理器。
我希望这能对你有所帮助。
https://stackoverflow.com/questions/69256993
复制相似问题