| New file | 
 |  |  | 
 |  |  | 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() ; | 
 |  |  |    } | 
 |  |  |  | 
 |  |  | } |