admin管理员组文章数量:1586542
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
版权声明:本文标题:Quartz Cron表达式 在线生成器 java定时任务 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1727970647a1140129.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论