小编Ste*_*ark的帖子

Spring4 @Scheduled @Transaction抛出mutliple dataSources的flush中没有正在进行的事务

从spring MVC控制器调用时,我的服务(使用main dataSource的jobExecutor)工作正常,但是当从调度方法调用时,所有时间都抛出"TransactionRequiredException:没有事务正在进行中".原因是看起来从scheduledThreadPool绑定到线程的jdbcTransaction将NOT_ACTIVE绑定为localStatus.该事务用于主数据源,默认情况下从DataSourceTransactionManager开始.

我正在使用spring-boot,spring-data和hibernate,下面是那些版本

spring-boot:1.2.7.RELEASE

hibernate-core:4.3.11.Final

hibernate-entitymanager:4.3.11.Final

也使用java配置

ServerConfig.java

@Configuration
@EnableAutoConfiguration
@EnableScheduling
@EnableAsync
@EnableAspectJAutoProxy
@ComponentScan("com.my.client")
@EnableTransactionManagement
@EntityScan(basePackages = {"com.my.database.model"})
@EnableJpaRepositories(
    transactionManagerRef = "transactionManager",
    basePackages = {"com.my.database.repository"})
public class ServerConfig extends SpringBootServletInitializer implements SchedulingConfigurer, AsyncConfigurer {

    static Logger log = Logger.getLogger(ServerModeConfig.class.getName());

    @Override
    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
        taskRegistrar.setScheduler(taskExecutor());
    }

    /**
     * get executor for scheduling job
     * @return scheduled executor
     */
    @Bean(destroyMethod="shutdown")
    public Executor taskExecutor() {
        return Executors.newScheduledThreadPool(20);
    }

    /**
     * get executor for async job
     * @return executor for asynchronous …
Run Code Online (Sandbox Code Playgroud)

hibernate spring-transactions spring-data spring-scheduled spring-boot

7
推荐指数
1
解决办法
4559
查看次数