zoukankan      html  css  js  c++  java
  • zbb20170228_spring_quartz2动态添加任务

    1、包

    spring包

    quartz2.*包

    2、class文件

     

    JobBean.java

    package com.zbb.quartz2;
    
    public class JobBean {
        private String jobId;
        private String jobGroupName;
        private String JobCronExpression;
        private String JobDesc;
        private Class<?> JobClass;
        private String JobMethod;
        private String JobMethodSwhere1;
        private String JobMethodSwhere2;
        private String JobStatus;
        public String getJobId() {
            return jobId;
        }
        public void setJobId(String jobId) {
            this.jobId = jobId;
        }
        public String getJobGroupName() {
            return jobGroupName;
        }
        public void setJobGroupName(String jobGroupName) {
            this.jobGroupName = jobGroupName;
        }
        public String getJobCronExpression() {
            return JobCronExpression;
        }
        public void setJobCronExpression(String jobCronExpression) {
            JobCronExpression = jobCronExpression;
        }
        public String getJobDesc() {
            return JobDesc;
        }
        public void setJobDesc(String jobDesc) {
            JobDesc = jobDesc;
        }
        public Class<?> getJobClass() {
            return JobClass;
        }
        public void setJobClass(Class<?> jobClass) {
            JobClass = jobClass;
        }
        public String getJobMethod() {
            return JobMethod;
        }
        public void setJobMethod(String jobMethod) {
            JobMethod = jobMethod;
        }
        public String getJobMethodSwhere1() {
            return JobMethodSwhere1;
        }
        public void setJobMethodSwhere1(String jobMethodSwhere1) {
            JobMethodSwhere1 = jobMethodSwhere1;
        }
        public String getJobMethodSwhere2() {
            return JobMethodSwhere2;
        }
        public void setJobMethodSwhere2(String jobMethodSwhere2) {
            JobMethodSwhere2 = jobMethodSwhere2;
        }
        public String getJobStatus() {
            return JobStatus;
        }
        public void setJobStatus(String jobStatus) {
            JobStatus = jobStatus;
        }
        
    }

    JobFactory.java

    package com.zbb.quartz2;
    
    import java.lang.reflect.Method;
    import java.util.Date;
    
    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class JobFactory implements Job{
    
        public void execute(JobExecutionContext context) throws JobExecutionException {
            // TODO Auto-generated method stub
            System.out.println(new Date().toLocaleString()+"JobFactory");
            JobBean jobBean = (JobBean)context.getMergedJobDataMap().get("jobBean");
            Class<?> jobClass = jobBean.getJobClass();
            try {
                Object newInstance = jobClass.newInstance();
                Method method = jobClass.getMethod(jobBean.getJobMethod(), new Class[]{});
                method.invoke(newInstance, new Object[]{});
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } 
            
            
        }
    
    }

    JobTask.java

    package com.zbb.quartz2;
    
    import org.quartz.CronScheduleBuilder;
    import org.quartz.CronTrigger;
    import org.quartz.JobBuilder;
    import org.quartz.JobDetail;
    import org.quartz.JobKey;
    import org.quartz.Scheduler;
    import org.quartz.SchedulerException;
    import org.quartz.Trigger;
    import org.quartz.TriggerBuilder;
    import org.quartz.TriggerKey;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.scheduling.quartz.SchedulerFactoryBean;
    import org.springframework.stereotype.Service;
    
    @Service
    public class JobTask {
        @Autowired
        SchedulerFactoryBean schedulerFactoryBean;
        public void execute() throws Exception {
            JobBean jobBean = new JobBean();
            jobBean.setJobId("id");
            jobBean.setJobGroupName("group");
            jobBean.setJobClass(Class.forName("com.zbb.quartz2.JobTest"));
            jobBean.setJobCronExpression("0/5 * * * * ?");
            jobBean.setJobMethod("run");
            
            Scheduler scheduler = schedulerFactoryBean.getScheduler();
            
            addJob(jobBean, scheduler);
            new Thread(new MyRunable(jobBean, scheduler, new JobTask())).start();
        }
    
        public void addJob(JobBean jobBean,Scheduler scheduler) throws Exception {
            TriggerKey triggerKey = TriggerKey.triggerKey(jobBean.getJobId(), jobBean.getJobGroupName());
            Trigger trigger = scheduler.getTrigger(triggerKey);
            JobDetail jobDetail = JobBuilder.newJob(JobFactory.class).withIdentity(jobBean.getJobId(), jobBean.getJobGroupName()).build();
            jobDetail.getJobDataMap().put("jobBean", jobBean);
            CronScheduleBuilder cronSchedule = CronScheduleBuilder.cronSchedule(jobBean.getJobCronExpression());
            trigger = TriggerBuilder.newTrigger().withIdentity(jobBean.getJobId(), jobBean.getJobGroupName()).withSchedule(cronSchedule).build();
            scheduler.scheduleJob(jobDetail, trigger);
        }
    
        public void deleteJob(JobBean jobBean,Scheduler scheduler) throws Exception {
            JobKey jobKey = JobKey.jobKey(jobBean.getJobId(), jobBean.getJobGroupName());
            scheduler.deleteJob(jobKey);
        }
    }

    JobTest.java

    package com.zbb.quartz2;
    
    import java.util.Date;
    
    public class JobTest {
        public void run(){
            System.out.println(new Date().toLocaleString()+"JobTest");
        }
    }

    MyRunable.java

    package com.zbb.quartz2;
    
    import org.quartz.JobKey;
    import org.quartz.Scheduler;
    
    public class MyRunable implements Runnable {
        JobBean jobBean;
        Scheduler scheduler;
        JobTask jobTask;
        public MyRunable(JobBean jobBean,Scheduler scheduler,JobTask jobTask){
            this.jobBean=jobBean;
            this.scheduler=scheduler;
            this.jobTask=jobTask;
        }
        public void run() {
            // TODO Auto-generated method stub
            try {
                Thread.sleep(10000);
                jobTask.deleteJob(jobBean, scheduler);
                jobBean.setJobCronExpression("0/1 * * * * ?");
                jobTask.addJob(jobBean, scheduler);
    
            } catch (Exception e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
        }
    
    
    }

    Test.java

    package com.zbb.quartz2;
    
    import org.springframework.context.support.ClassPathXmlApplicationContext;
    
    public class Test {
        public static void main(String[] args) {
            ClassPathXmlApplicationContext classPathXmlApplicationContext = new ClassPathXmlApplicationContext("com/zbb/config/spring-servlet.xml");
        }
    }

    4、xml

    spring-servlet.xml

    <bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" />
         <!-- com.zbb.quartz2 -->
        <bean id="jobMethod" class="com.zbb.quartz2.JobTask" init-method="execute"/>
        
  • 相关阅读:
    C# 利用 Geckofx60 实现下载
    C# 线程 线程池
    C# DateTime 与 String 格式转换
    C# WPF 获取程序路径
    C# 计时器 Timer 介绍
    获取远程图片并把它保存到本地
    php sql 过滤
    PHP如何生成伪静态
    用php获取客户端IP地址的方法
    php过滤危险html代码
  • 原文地址:https://www.cnblogs.com/super-admin/p/6481406.html
Copyright © 2011-2022 走看看