zoukankan      html  css  js  c++  java
  • JFinal框架_定时触发程序

    JFinal框架进行作业调度,使用JFinal-ext2与quartzf进行配置。

    maven说明:

    <dependency>
        <groupId>com.jfinal</groupId>
        <artifactId>jfinal</artifactId>
        <version>3.2</version>
    </dependency>
    
    <dependency>
        <groupId>com.jfinal</groupId>
        <artifactId>jfinal-ext2</artifactId>
        <version>2.0.2</version>
    </dependency>
    
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.1.1</version>
    </dependency>

    Config.java配置(插件)

    public void configPlugin(Plugins me) {
        QuartzPlugin quartzPlugin = new QuartzPlugin("job.properties");
        me.add(quartzPlugin);
    }

    job.properties配置(每天14:48:10 调度作业):

    #JobA
    
    a.job=com.fwpsl.util.Test1
    
    a.cron=10 48 14 * * ?
    
    a.enable=true

     Test1.java

    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class Test1 implements Job {
       @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            //调度作业内容
            System.out.println("任务1:"+CommonUtils.getDate());
        }
    }
    
    
    使用quartz插件进行作业调度
    QuartzManager.java
    import org.apache.log4j.LogManager;
    import org.apache.log4j.Logger;
    import org.quartz.*;
    import org.quartz.impl.StdSchedulerFactory;
    
    import static org.quartz.CronScheduleBuilder.cronSchedule;
    import static org.quartz.JobBuilder.newJob;
    import static org.quartz.TriggerBuilder.newTrigger;
    
    /**
     * Created by fwpsl on 2017/10/16.
     */
    public class QuartzManager {
        public  static QuartzManager qm=new QuartzManager();
        private Logger log = LogManager.getLogger(QuartzManager.class);
        private Scheduler scheduler = null;
    
        private QuartzManager() {
            try {
                scheduler = new StdSchedulerFactory().getScheduler();
                log.info("初始化调度器 ");
            } catch (SchedulerException ex) {
                log.error("初始化调度器=> [失败]:" + ex.getLocalizedMessage());
            }
        }
    
        //添加任务
        public void addJob(String name, String group, Class<? extends Job> clazz, String cronExpression) {
            try {
                // 构造任务
                JobDetail job = newJob(clazz).withIdentity(name, group).build();
                // 构造任务触发器
                Trigger trg = newTrigger().withIdentity(name, group).withSchedule(cronSchedule(cronExpression)).build();
                // 将作业添加到调度器
                scheduler.scheduleJob(job, trg);
                log.info("创建作业=> [作业名称:" + name + " 作业组:" + group + "] ");
                System.out.println("创建作业=> [作业名称:" + name + " 作业组:" + group + "] ");
            } catch (SchedulerException e) {
                e.printStackTrace();
                log.error("创建作业=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
            }
        }
        //移除任务
        public void removeJob(String name, String group) {
            try {
                TriggerKey tk = TriggerKey.triggerKey(name, group);
                scheduler.pauseTrigger(tk);// 停止触发器
                scheduler.unscheduleJob(tk);// 移除触发器
                JobKey jobKey = JobKey.jobKey(name, group);
                scheduler.deleteJob(jobKey);// 删除作业
                log.info("删除作业=> [作业名称:" + name + " 作业组:" + group + "] ");
                System.out.println("删除作业=> [作业名称:" + name + " 作业组:" + group + "] ");
            } catch (SchedulerException e) {
                e.printStackTrace();
                log.error("删除作业=> [作业名称:" + name + " 作业组:" + group + "]=> [失败]");
            }
        }
    
        public void start() {
            try {
                scheduler.start();
                log.info("启动调度器 ");
                System.out.println("启动调度器 ");
            } catch (SchedulerException e) {
                e.printStackTrace();
                log.error("启动调度器=> [失败]");
            }
        }
    
        public void shutdown() {
            try {
                scheduler.shutdown();
                log.info("停止调度器 ");
                System.out.println("停止调度器 ");
            } catch (SchedulerException e) {
                e.printStackTrace();
                log.error("停止调度器=> [失败]");
            }
        }
        //测试
        public static void main(String[] args) throws InterruptedException{
            QuartzManager qm = QuartzManager.qm;
            String name = "DynamicJobName";
            String group = "DynamicJobGroup";
            String cronExpression = "*/2 * * * * ?";
            String className = "com.fwpsl.util.Test1";
            Class<? extends Job> jobClazz = null;
            try {
                jobClazz = Class.forName(className).asSubclass(Job.class);
            } catch (Exception e) {
                System.out.println(className+"没有继承job,e=="+e);
            }
            if(jobClazz==null){
                System.exit(0);
            }
            qm.addJob(name, group, jobClazz, cronExpression);
            qm.start();
            Thread.sleep(9000);
            String name2 = "DynamicJobName2";
            String group2 = "DynamicJobGroup2";
            String cronExpression2 = "*/1 * * * * ?";
            qm.addJob(name2, group2, Test2.class, cronExpression2);
            Thread.sleep(5000);
            qm.removeJob(name, group);
            Thread.sleep(5000);
            qm.shutdown();
        }
    
    }

    Test1.java

    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class Test1 implements Job {
       @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("任务1:"+CommonUtils.getDate());
        }
    }

    Test2.java

    import org.quartz.Job;
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    
    public class Test2 implements Job {
       @Override
        public void execute(JobExecutionContext context) throws JobExecutionException {
            System.out.println("任务2:"+CommonUtils.getDate());
        }
    }






  • 相关阅读:
    SQLite Java Wrapper/JDBC Driver(收集)
    JAVA 并行运行(收集)
    log4net使用方法(转载)
    WMI服务故障,VBS脚本无法运行错误
    ArcEngine中UID使用资料收集
    使用 ArcGIS Engine Runtime 制作安装包(转载)
    Eclipse安装WindowBuilder Pro(转载)
    C#操作SQL Server数据库
    自动化测试 (三) Web自动化测试原理
    HTTP协议 (六) 状态码详解
  • 原文地址:https://www.cnblogs.com/fwpsl/p/7677107.html
Copyright © 2011-2022 走看看