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