Quartz定时任务(四)

1.测试用例

1package com.ninemax.application.quartz.loader; 2 3import java.io.File; 4import java.lang.reflect.Constructor; 5import java.lang.reflect.Field; 6import java.lang.reflect.Method; 7import java.net.URL; 8import java.net.URLClassLoader; 9 10import org.quartz.JobDetail; 11 12import com.ninemax.application.quartz.model.MyJob; 13/** 14 * 利用JAVA反射调用定时任务 15 * 16 * @author Darker 17 * 18 */ 19@SuppressWarnings("all") 20public class ClassLoaderTest { 21 22 public static void main(String[] args) { 23 // 读取指定JAR包 24 File jarFile= new File("E:/Worksapces2015/Vip/WebRoot/WEB-INF/lib/quartz-1.8.3.jar"); 25 // 读取指定的类 26 File classFile= new File("E:/Worksapces2015/Vip/src/com/ninemax/application/quartz/model/MyJob.class"); 27 try { 28 // 加载指定JAR包 29 URLClassLoader loader=new URLClassLoader(new URL[]{jarFile.toURL()}); 30 // 加载指定的类 31 URLClassLoader classLoader= new URLClassLoader(new URL[]{classFile.toURL()}); 32 // 加载指定JAR包中的类 33 Class SchedulerFactoryClazz=loader.loadClass("org.quartz.impl.StdSchedulerFactory"); 34 Class CronTriggerClazz=loader.loadClass("org.quartz.CronTrigger"); 35 Class JobDetailClazz=loader.loadClass("org.quartz.JobDetail"); 36 Class SchedulerClazz=loader.loadClass("org.quartz.Scheduler"); 37 Class TriggerClazz=loader.loadClass("org.quartz.Trigger"); 38 // 加载MyJob中的类 39 Class MyJobClazz=classLoader.loadClass("com.ninemax.application.quartz.model.MyJob"); 40 // 调度工厂SchedulerFactory初始化 41 Object schedulerFactory = SchedulerFactoryClazz.newInstance(); 42 // 调度器Scheduler初始化 11 43 //Object scheduler=SchedulerClazz.newInstance(); 44 // 通过调度工厂获取调度器scheduler 45 Object scheduler=schedulerFactory.getClass().getDeclaredMethod("getScheduler", null); 46 // 初始化JobDetail实例 47 Object jobDetail=JobDetailClazz.newInstance(); 48 Constructor jobDetailMethod=jobDetail.getClass().getConstructor(String.class,String.class,Class.class); 49 // 构造方法jobDetail填写参数 50 jobDetailMethod.newInstance("job1","group1",MyJobClazz); 51 //jobDetailMethod.invoke(); 52 // 初始化实例 53 Object cronTrigger=CronTriggerClazz.newInstance(); 54 // cronTrigger构造方法 55 Constructor cronTriggerMethod=cronTrigger.getClass().getConstructor(String.class,String.class); 56 // 构造方法cronTrigger填写参数 57 cronTriggerMethod.newInstance("cronTrigger","triggerGroup"); 58 // 获取CronExpression方法 59 Method cronExpression = cronTrigger.getClass().getDeclaredMethod("setCronExpression", String.class); 60 // 设置cronExpression参数 61 cronExpression.invoke(cronTrigger, "0 30 18 * * ? *"); 62 // 获取scheduleJob方法 63 Method scheduleJob=scheduler.getClass().getDeclaredMethod("scheduleJob", JobDetailClazz,TriggerClazz); 64 // 设置参数 65 scheduleJob.invoke(scheduler, jobDetail,cronTrigger); 66 // 获取start方法 67 Method start=scheduler.getClass().getDeclaredMethod("start", null); 68 // 启动调度 69 start.invoke(scheduler, null); 70 } catch (Exception e) { 71 e.printStackTrace(); 72 } 73 74 } 75 76}

2.domain

1package com.ninemax.application.quartz.model; 2 3import java.util.Date; 4 5import org.quartz.Job; 6import org.quartz.JobExecutionContext; 7import org.quartz.JobExecutionException; 8 9public class MyJob implements Job { 10 11 @Override 12 public void execute(JobExecutionContext arg0) throws JobExecutionException { 13 14 System.out.println("Quartz测试时间:" + new Date()); 15 } 16 17}

3.quartz-1.8.3.jar下载地址:

http://mvnrepository.com/artifact/org.quartz-scheduler/quartz

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

Java反射练习(一)

packagecom.slliver.reflection;importjava.lang.reflect.Constructor;importjava.lang.reflect.Field;importjava.lang.reflect.Method;importjava.lang.reflect.Modifier;/\\

Quartz结合SPRING多任务定时调用

public class QuartzJob {      public void work()      {              System.out.println(Spring Quartz的任务调度1被调用!");              //定时调用的业务逻辑      }

Nginx + lua +[memcached,redis]

精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用