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