从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