任务调度框架Quartz实例
来源:互联网 发布:dnf盗号软件 编辑:程序博客网 时间:2024/05/01 11:10
Quartz框架是一个全功能、开源的任务调度服务,可以集成几乎任何的java应用程序—从小的单片机系统到大型的电子商务系统。Quartz可以执行上千上万的任务调度。
核心概念
Quartz核心的概念:scheduler任务调度、Job任务、Trigger触发器、JobDetail任务细节
1.下载相应的jar包:http://www.quartz-scheduler.org/
2.写一个执行任务类
package cn.quartz;import java.util.Date;import org.quartz.Job;import org.quartz.JobExecutionContext;import org.quartz.JobExecutionException;/** * 需要执行的任务 * @author zwj */public class Myjob implements Job{//把要执行的操作,写在execute方法中public void execute(JobExecutionContext arg0) throws JobExecutionException {System.out.println("执行Quartz===="+new Date());}}
3.使用CornTrigger触发器:
package cn.quartz;import org.quartz.CronScheduleBuilder;import org.quartz.JobBuilder;import org.quartz.JobDetail;import org.quartz.Scheduler;import org.quartz.SchedulerException;import org.quartz.SchedulerFactory;import org.quartz.Trigger;import org.quartz.TriggerBuilder;import org.quartz.impl.StdSchedulerFactory;/** * 调度任务类 * @author zwj */public class CronTriggerTest { static SchedulerFactory schedulerfactory=new StdSchedulerFactory(); static Scheduler scheduler=null; public static void triggerTest(){ try {// 通过schedulerFactory获取一个调度器 scheduler=schedulerfactory.getScheduler(); // 创建jobDetail实例,绑定Job实现类 // 指明job的名称,所在组的名称,以及绑定job类 JobDetail job=JobBuilder.newJob(Myjob.class).withIdentity("job1", "jgroup1").build(); // 定义调度触发规则 // 使用simpleTrigger规则 // 使用cornTrigger规则 每天10点42分 Trigger trigger=TriggerBuilder.newTrigger().withIdentity("simpleTrigger", "triggerGroup") .withSchedule(CronScheduleBuilder.cronSchedule("0 48 22 * * ?")) .startNow().build(); // 把作业和触发器注册到任务调度中 scheduler.scheduleJob(job, trigger); // 启动调度 // scheduler.start(); } catch (Exception e) {e.printStackTrace();} }/** * 启动quartz */public static void startQuartz(){ try { triggerTest();scheduler.start();System.out.println("启动成功");} catch (SchedulerException e) {e.printStackTrace();System.out.println("启动失败");}}/** * 关闭quartz */public static void shutdownQuartz(){try {//triggerTest();scheduler.shutdown();} catch (SchedulerException e) {e.printStackTrace();System.out.println("关闭失败");}}}
4.写一个控制器servlet用来控制quartz的开启与关闭
package cn.quartz;import java.io.UnsupportedEncodingException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;/** * 启动或停止quartz * @author Auser */public class StartOrEndQuartz extends HttpServlet{public void service(HttpServletRequest request,HttpServletResponse response){try {request.setCharacterEncoding("utf-8");response.setContentType("text/html;charset=utf-8");String flag=request.getParameter("flag");System.out.println(flag);if(flag.equals("1")){CronTriggerTest.startQuartz();}if(flag.equals("2")){CronTriggerTest.shutdownQuartz();}} catch (Exception e) {e.printStackTrace();}}}
5.编写一个控制页面
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html> <head> <base href="<%=basePath%>"> <title>quartz</title> <meta http-equiv="pragma" content="no-cache"><meta http-equiv="cache-control" content="no-cache"><meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"><meta http-equiv="description" content="This is my page"><!--<link rel="stylesheet" type="text/css" href="styles.css">--> <script type="text/javascript"> function start(){ document.getElementById('flag').value=1; document.getElementById('quartz').submit(); } function shutdown(){ document.getElementById('flag').value=2; document.getElementById('quartz').submit(); } </script> </head> <body> <form id="quartz" action="quartz.do" method="post"> <input type="hidden" id="flag" name="flag" value=""/> <input type="button" value="启动" onclick="start();"> <input type="button" value="停止" onclick="shutdown();"> </form> </body></html>
6.配置web.xml
<servlet> <servlet-name>quartz</servlet-name> <servlet-class>cn.quartz.StartOrEndQuartz</servlet-class></servlet><servlet-mapping> <servlet-name>quartz</servlet-name> <url-pattern>/quartz.do</url-pattern></servlet-mapping>
0 0
- 任务调度框架Quartz实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- Java任务调度框架Quartz教程实例
- 任务调度 Quartz框架
- 任务调度框架Quartz
- Quartz任务调度框架
- 任务调度框架Quartz
- 任务调度框架Quartz
- Quartz------任务调度框架
- Spring框架结合Quartz实现任务调度实例
- Spring框架结合Quartz实现任务调度实例
- 图形化开发c#
- 第8章 BOM小结
- OP01-delete_kernel
- 【Java数据结构】链表
- ant调用make实现Makefile编译
- 任务调度框架Quartz实例
- [玩转北京] 北京最值得你一看的博物馆大全
- 关于自己走上开发之路
- AndroidManifest.xml文件详解(data)
- viewWillLayoutSubviews()、viewDidLayoutSubviews()、AutoLayout执行顺序
- LeetCode Median of Two Sorted Arrays
- 【Linux运维-集群技术进阶】Nginx的安装配置
- Intellij IDEA Android Studios 修改包名
- assert()函数用法总结