admin管理员组

文章数量:1585963

1. ui界面

http://wwwblogs/yanweidie/p/3537144.html


2.web.xml配置

    <listener>
        <listener-class>com.xu.task.warning.MyJob</listener-class>
    </listener>


3.MyJob 继承 ServletContextListener


import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.springframework.context.ApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.xu.service.ConfigService;
import com.xu.task.model.Config;
import com.xu.task.run.RunningTask;

/**
 * 任务调度
 *
 */
public class MyJob implements ServletContextListener
{
    
    public static ApplicationContext contentObject = null;
    

    @Override
    public void contextDestroyed(ServletContextEvent arg0) {
        // TODO Auto-generated method stub
        
    }

    @Override
    public void contextInitialized(ServletContextEvent set)
    {
        ServletContext sy =  set.getServletContext();
        contentObject = WebApplicationContextUtils.getWebApplicationContext(sy);
        try {
            ConfigService configService = (ConfigService) contentObject.getBean("configService");
            List<Config> configs = configService.getAll();   //获得所有定时任务,初始化
            for(Config config : configs)
            {
                RunningTask job = new RunningTask();
                String time = config.getTriggerTime().trim();
                String status = config.getStatus();
                String jobName = config.getId()+"_"+config.getName();
                if("启用".equals(status)){
                    QuartzManager.addJob(job, time, jobName,  config.getId());
                }
            }
        } catch (Exception e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}


4.  任务管理
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;
/**
 * 任务管理
 *
 */
public class QuartzManager
{
    private static SchedulerFactory sf = new StdSchedulerFactory();
    
    private static String JOB_GROUP_NAME = "group1";
    
    private static String TRIGGER_GROUP_NAME = "trigger1";
    
    
     /**
      * 添加一个任务
      * @param jobName--任务名称
      * @param job--任务执行对象
      * @param time--任务触发时机
      * @throws Exception
      */
     public static void addJob(Job job,String time,String jobName,Integer resource_id )throws Exception
     {
         boolean isValidate = CronExpression.isValidExpression(time);
         if(!isValidate)return;
         Scheduler sched = sf.getScheduler();
        
        //任务名,任务组,任务执行类
         JobDetail jobDetail = new JobDetail(jobName, JOB_GROUP_NAME, job.getClass());
        //触发器
        CronTrigger trigger =    new CronTrigger(jobName, TRIGGER_GROUP_NAME);//触发器名,触发器组
        //资源id
        jobDetail.setDescription(resource_id+"");
        //触发器时间设定
        trigger.setCronExpression(time);
        sched.scheduleJob(jobDetail,trigger);
        
    //    Date rDate = trigger.getNextFireTime();
    //    trigger.setStartTime(rDate);
        
        //启动
        if(!sched.isShutdown()){
            sched.start();
        }
    }
    
     /**
      * 修改定时任务
      * @param jobName
      * @param time
      * @throws Exception
      */
     public static void modifyJobTime(String jobName,Job job,String time,Integer resource_id)throws Exception
     {
         boolean isValidate = CronExpression.isValidExpression(time);
         if(!isValidate)return;
         removeJob(jobName);
         addJob(job, time, jobName, resource_id);
     }
    
     /**
      * 移除任务
      * @param jobName
      * @throws Exception
      */
     public static void removeJob(String jobName)throws Exception
     {
        Scheduler sched = sf.getScheduler();
        sched.pauseTrigger(jobName,TRIGGER_GROUP_NAME);//停止触发器
        sched.unscheduleJob(jobName,TRIGGER_GROUP_NAME);//移除触发器
        sched.deleteJob(jobName,JOB_GROUP_NAME);//删除任务
     }
}


5.任务调度实现类

public class RunningTask implements Job {
    private static final Log LOG = LogFactory.getLog(RunningTask.class);

    public RunningTask() {
    }

    @Override
    public void execute(JobExecutionContext context)  throws JobExecutionException {  
        SysLog sysLog = new SysLog();
        sysLog.setStartTime(DateUtil.toDateTimeString(new Date()));// 任务调度开始时间
        String rid = context.getJobDetail().getDescription();
        Config config = configService.get(Integer.parseInt(rid));
        ··········
    }


6. db任务表


CREATE TABLE `job` (                  
                    `id` int(11) NOT NULL,                           
                    `name` varchar(255) NOT NULL,                --任务名称   
                    `trigger_time` varchar(50) NOT NULL,       --触发时间     
                    `type` varchar(50) NOT NULL,                                
                    `status` varchar(20) DEFAULT NULL,        -- 任务状态             
                    PRIMARY KEY (`id`)                               
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8   




本文标签: 在线生成器表达式Quartzcron