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