Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring Boot Atomikos事务管理器java.lang.NoClassDefFoundError:com/Atomikos/jms/AtomikosConnectionFactoryBean错误_Spring_Spring Boot_Spring Transactions_Jta - Fatal编程技术网

Spring Boot Atomikos事务管理器java.lang.NoClassDefFoundError:com/Atomikos/jms/AtomikosConnectionFactoryBean错误

Spring Boot Atomikos事务管理器java.lang.NoClassDefFoundError:com/Atomikos/jms/AtomikosConnectionFactoryBean错误,spring,spring-boot,spring-transactions,jta,Spring,Spring Boot,Spring Transactions,Jta,我试图在Spring引导项目中使用Atomikos事务管理器来管理一些只包含JMS而不包含数据源的事务操作。因此,我只配置事务性JMS连接工厂,而不是事务性数据源连接。它给出了以下错误: Caused by: java.lang.NoClassDefFoundError: com/atomikos/jms/AtomikosConnectionFactoryBean at com.tfkb.common.config.JMSConfig.xaQueueConnectionFactory(J

我试图在Spring引导项目中使用Atomikos事务管理器来管理一些只包含JMS而不包含数据源的事务操作。因此,我只配置事务性JMS连接工厂,而不是事务性数据源连接。它给出了以下错误:

Caused by: java.lang.NoClassDefFoundError: com/atomikos/jms/AtomikosConnectionFactoryBean
    at com.tfkb.common.config.JMSConfig.xaQueueConnectionFactory(JMSConfig.java:275) ~[classes/:na]
    at ...
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[na:1.8.0_121]
    ... 67 common frames omitted
我已经检查了pom.xml,目前,我在这个上下文中有这些依赖项:

        <dependency>
            <groupId>org.apache.activemq</groupId>
            <artifactId>activemq-all</artifactId>
            <version>5.15.9</version>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jta-atomikos</artifactId>
        </dependency>
        <dependency>
            <groupId>com.atomikos</groupId>
            <artifactId>transactions-jms</artifactId>
            <version>4.0.4</version>
            <scope>compile</scope>
        </dependency>
        <dependency>
            <groupId>com.atomikos</groupId>
            <artifactId>transactions-jta</artifactId>
            <version>4.0.4</version>
        </dependency>
而且

package com.xxx.common.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.transaction.annotation.TransactionManagementConfigurer;
import org.springframework.transaction.jta.JtaTransactionManager;

import javax.inject.Inject;
import javax.transaction.TransactionManager;
import javax.transaction.UserTransaction;

@Configuration
@EnableTransactionManagement
public class TxConfig {

    @Inject
    private AtomikosJtaConfiguration jtaConfiguration ;

    @Bean
    @Primary
    public PlatformTransactionManager platformTransactionManager() throws Throwable {
        UserTransaction userTransaction = jtaConfiguration.userTransaction() ;
        TransactionManager transactionManager = jtaConfiguration.transactionManager() ;
        return new JtaTransactionManager(  userTransaction, transactionManager );
    }

}
这是一个多模块项目,我将这些配置放在一个公共包中,调用者使用它们的方式如下:

@EntityScan(basePackages = "com.servicium.entity")
@ComponentScan({"com.xxx.alarmservice.impl", "com.xxx.common",
        "com.xxx.common.interf", "com.xxx.common.config", "com.xxx.common.test"})
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
@Import({MyConfig.class, RestTemplateConfig.class, SecurityConfig.class,
        RequestLoggingConfig.class, JMSConfig.class, AtomikosJtaConfiguration.class, TxConfig.class})
public class AlarmServiceApplication {
...
}
在这个模块中,我有一个事务方法作为测试方法:

@Test
@Transactional
public void testReceiveXXX() throws Exception {
...
}
...
有人能帮我在Spring Boot项目中配置Atomikos和JMS吗

@EntityScan(basePackages = "com.servicium.entity")
@ComponentScan({"com.xxx.alarmservice.impl", "com.xxx.common",
        "com.xxx.common.interf", "com.xxx.common.config", "com.xxx.common.test"})
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
@Import({MyConfig.class, RestTemplateConfig.class, SecurityConfig.class,
        RequestLoggingConfig.class, JMSConfig.class, AtomikosJtaConfiguration.class, TxConfig.class})
public class AlarmServiceApplication {
...
}
@Test
@Transactional
public void testReceiveXXX() throws Exception {
...
}
...