package com.dy.common.schedulerTask;
|
|
import java.util.Properties;
|
|
import org.apache.logging.log4j.*;
|
import org.quartz.Scheduler;
|
import org.quartz.SchedulerException;
|
import org.quartz.impl.StdSchedulerFactory;
|
|
public class SchedulerTaskFactory {
|
|
private static Logger log = LogManager.getLogger(SchedulerTaskFactory.class.getName()) ;
|
|
private static Scheduler scheduler ;
|
|
private static Properties pro ;
|
|
static{
|
pro = new Properties() ;
|
//以下属性从quartz-all-2.1.7.jar得到,而且下面所有项目都要配置
|
pro.put("org.quartz.scheduler.instanceName", "DefaultQuartzScheduler");
|
pro.put("org.quartz.scheduler.rmi.export", "false");
|
pro.put("org.quartz.scheduler.rmi.proxy", "false");
|
pro.put("org.quartz.scheduler.wrapJobExecutionInUserTransaction", "false");
|
pro.put("org.quartz.threadPool.class", "org.quartz.simpl.SimpleThreadPool");
|
pro.put("org.quartz.threadPool.threadCount", "10");
|
pro.put("org.quartz.threadPool.threadPriority", "5");
|
pro.put("org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread", "true");
|
pro.put("org.quartz.jobStore.misfireThreshold", "60000");
|
pro.put("org.quartz.jobStore.class", "org.quartz.simpl.RAMJobStore");
|
}
|
|
/**
|
* 得到调度器唯一实例
|
* @return
|
*/
|
public static Scheduler getSingleScheduler(){
|
if(scheduler == null){
|
try {
|
scheduler = new StdSchedulerFactory(pro).getScheduler();
|
} catch (SchedulerException e) {
|
log.error(e) ;
|
}
|
}
|
return scheduler ;
|
}
|
|
|
/**
|
* 得到调度器唯一实例
|
* @param threadPoolMaxCount
|
* @param threadPoolPriority
|
* @return
|
*/
|
public static Scheduler getSingleScheduler(Integer threadPoolMaxCount, Integer threadPoolPriority){
|
if(scheduler == null){
|
try {
|
if(threadPoolMaxCount != null && threadPoolMaxCount.intValue() >= 0){
|
pro.put("org.quartz.threadPool.threadCount", "" + (threadPoolMaxCount==null?10:(threadPoolMaxCount<=0?10:threadPoolMaxCount)));
|
}
|
if(threadPoolPriority != null && threadPoolPriority.intValue() >= 0){
|
pro.put("org.quartz.threadPool.threadPriority", "" + (threadPoolPriority==null?5:(threadPoolPriority<=0?5:threadPoolPriority)));
|
}
|
scheduler = new StdSchedulerFactory(pro).getScheduler();
|
} catch (SchedulerException e) {
|
log.error(e) ;
|
}
|
}
|
return scheduler ;
|
}
|
|
/**
|
* 关闭调度器
|
* @throws SchedulerException
|
*/
|
public static void shutdownScheduler() throws SchedulerException{
|
scheduler.shutdown() ;
|
}
|
|
}
|