package nonautoscan.com.aol.micro.server; import java.util.concurrent.Executor; import java.util.concurrent.Executors; import org.springframework.aop.interceptor.AsyncUncaughtExceptionHandler; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableScheduling; import org.springframework.scheduling.config.ScheduledTaskRegistrar; import com.aol.micro.server.SchedulingConfiguration; @Configuration @EnableScheduling @EnableAsync public class ScheduleAndAsyncConfig implements SchedulingConfiguration { private int executorThreadPoolSize; private int schedulerThreadPoolSize; @Value("${default.task.executor.size:3}") public void setExecutorThreadPoolSize(int executorThreadPoolSize) { this.executorThreadPoolSize = executorThreadPoolSize; } @Value("${default.scheduler.executor.size:3}") public void setSchedulerThreadPoolSize(int schedulerThreadPoolSize) { this.schedulerThreadPoolSize = schedulerThreadPoolSize; } @Override public Executor getAsyncExecutor() { return taskExecutor(); } @Override public void configureTasks(ScheduledTaskRegistrar taskRegistrar) { taskRegistrar.setScheduler(taskScheduler()); } @Bean(destroyMethod = "shutdown") public Executor taskScheduler() { return Executors.newScheduledThreadPool(schedulerThreadPoolSize); } @Bean public Executor taskExecutor() { return Executors.newFixedThreadPool(executorThreadPoolSize); } @Override public AsyncUncaughtExceptionHandler getAsyncUncaughtExceptionHandler() { return null; } }