用quartz可以实现web或非web模式的定时器
1、配置文件
quartz_job.xml
- <!---->xml version="1.0" encoding="UTF-8"?>
- <quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- overwrite-existing-jobs="true">
-
- <job>
- <job-detail>
- <name>yayaittname>
- <group>CRAWLER_JOB_GROUPgroup>
-
- <description>send task per daydescription>
- <job-class>com.yahaitt.quartz.QuartzSystemjob-class>
-
- <job-data-map allows-transient-data="true">
- <entry>
- <key>usernamekey>
- <value>wujinlivalue>
- entry>
- <entry>
- <key>passwordkey>
- <value>mahaibovalue>
-
- entry>
- job-data-map>
- job-detail>
- <trigger>
- <cron>
- <name>hourTaskJob-triggername>
- <group>CRAWLER_TRIGGER_GROUPgroup>
- <job-name>yayaittjob-name>
- <job-group>CRAWLER_JOB_GROUPjob-group>
-
-
- <cron-expression>1/12 * * * * ?cron-expression>
-
- cron>
- trigger>
- job>
-
-
-
-
-
- quartz>
该定时器实现了每12秒触发类com.yahaitt.quartz.QuartzSystem的execute函数,并通过java-data-map标签来实现参数的传递,如果不需要传递参数,可以将整个java-data-map标签去除。
需要注意的是job-detail与trigger中各子标签间的关系,比如trigger中job-name和job-group要与job-detail中的name和group对应。
可以通过在quartz标签中添加多个job来实现多个定时器的管理。
2、定义org.quartz.Job接口的实现类
QuartzSystem.java
- package com.yahaitt.quartz;
-
- import org.quartz.Job;
- import org.quartz.JobExecutionContext;
- import org.quartz.JobExecutionException;
-
- public class QuartzSystem implements Job {
-
- public void execute(JobExecutionContext context) throws JobExecutionException {
-
-
- String username = context.getJobDetail().getJobDataMap().getString("username");
- String password = context.getJobDetail().getJobDataMap().getString("password");
- System.out.println("username:" + username);
- System.out.println("password:" + password);
- }
-
- }
通过调用JobExecutionContext 的getJobDetail().getJobDataMap().getString(String paramname)来取得配置文件中定义的参数的值。
当定时器触发时,将执行该类的execute函数。
3、设置监听器
TaskScheduler.java
- package com.yahaitt.quartz;
-
- import java.util.Properties;
-
- import org.apache.log4j.Logger;
- import org.quartz.Scheduler;
- import org.quartz.SchedulerException;
- import org.quartz.SchedulerFactory;
- import org.quartz.impl.StdSchedulerFactory;
- import org.quartz.xml.JobSchedulingDataProcessor;
-
-
- public class TaskScheduler {
-
- private static Logger logger = Logger.getLogger(TaskScheduler.class);
-
- private static Scheduler scheduler;
-
- private String jobsConfigFile = "quartz-jobs.xml";
-
- public TaskScheduler() {
- initScheduler();
- }
-
-
-
-
-
-
- public void initScheduler() {
- try {
- StdSchedulerFactory factory = new StdSchedulerFactory();
-
- Properties properties = new Properties();
- properties.put("org.quartz.scheduler.instanceName","DefaultQuartzScheduler");
- properties.put("org.quartz.scheduler.rmi.export","false");
- properties.put("org.quartz.scheduler.rmi.proxy","false");
- properties.put("org.quartz.scheduler.wrapJobExecutionInUserTransaction","false");
- properties.put("org.quartz.threadPool.class","org.quartz.simpl.SimpleThreadPool");
- properties.put("org.quartz.threadPool.threadCount","20");
- properties.put("org.quartz.threadPool.threadPriority","5");
- properties.put("org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread","true");
- properties.put("org.quartz.jobStore.misfireThreshold","60000");
- properties.put("org.quartz.jobStore.class","org.quartz.simpl.RAMJobStore");
-
-
-
-
-
-
- factory.initialize(properties);
- SchedulerFactory sf = (StdSchedulerFactory)factory;
- scheduler = sf.getScheduler();
-
-
- } catch (SchedulerException e) {
- e.printStackTrace();
- logger.error(e);
- }
- }
-
-
-
-
-
-
- public void initJobs(String jobsConfig) throws Exception {
-
- this.jobsConfigFile = jobsConfig;
-
- JobSchedulingDataProcessor xmlProcessor = new JobSchedulingDataProcessor();
-
- xmlProcessor.processFileAndScheduleJobs(jobsConfigFile, scheduler, true);
- }
-
-
-
-
-
- public void startScheduler() throws SchedulerException {
-
- scheduler.start();
- }
-
-
-
-
-
- public void shutdownScheduler() throws SchedulerException {
- scheduler.shutdown();
- }
-
-
-
-
- public static void main(String[] args) {
- String jobsConfigfile = "E:/workspace/crawler/conf/quartz_job.xml";
- TaskScheduler scheduler = new TaskScheduler();
- try {
- scheduler.initJobs(jobsConfigfile);
- scheduler.startScheduler();
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- }
-
- }
分享到:
相关推荐
SSM定时器Quartz是一个广泛使用的Java定时任务框架,它允许开发者在应用程序中安排复杂的作业执行计划。在Java世界里,Quartz是一个强大的工具,它能够处理大量的并发任务,并提供了丰富的API来创建、调度和管理任务...
Spring定时器Quartz是Java应用中广泛使用的任务调度框架,它允许开发者定义并执行复杂的定时任务。这篇博客可能探讨了如何在Spring框架中集成Quartz,以实现灵活、可扩展的任务调度。 Quartz是一个开源的作业调度...
7. **持久化**:Quartz支持通过JDBC JobStore实现数据持久化,这样即使应用程序重启,Job和Trigger的状态也能被恢复,保证任务的连续性。 8. **并发与集群**:Quartz允许在多台服务器上部署同一个Scheduler实例,...
本教程将详细讲解如何使用Quartz实现一个简单的定时器功能。 首先,我们需要引入Quartz的依赖库到项目中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml <groupId>org.quartz-scheduler ...
【标题】:“定时器Quartz” Quartz是一个开源的工作调度框架,它允许程序在特定时间执行任务,类似于Java中的ScheduledExecutorService,但提供了更高级别的功能。Quartz主要用于企业级应用,可以创建、调度和执行...
在标题提到的"定时器Quartz.net2.0内置操作类"中,我们主要关注的是如何利用Quartz.NET 2.0版本提供的API来简化任务调度。 Quartz.NET 2.0的核心组件包括`IScheduler`、`IJob`和`ITrigger`。`IScheduler`是调度器...
本篇文章将详细讲解两种在Spring MVC框架中实现定时任务的方法:Spring MVC自带的定时器以及Quartz与Spring的集成。 首先,我们来看看Spring MVC自带的定时任务。Spring MVC作为Spring框架的一个模块,主要处理HTTP...
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用。Quartz可以用来创建简单或为运行十个,百个,甚至是好几万个Jobs这样复杂的程序。Jobs可以做成...
标题 "定时器 quartz 和 spring" 涉及到的是两个在Java开发中非常重要的框架——Quartz和Spring。Quartz是一个开源的工作调度框架,它允许开发者创建、调度和执行任务,而Spring则是一个功能丰富的应用程序框架,...
Quartz是一款功能强大的Java开源定时任务框架,它允许开发者创建、调度和执行各种类型的任务,以实现应用程序的自动化和批处理。Quartz以其灵活的API、丰富的特性以及稳定性,成为了许多企业级应用首选的定时解决...
Quartz是一款功能强大的开源Java定时框架,用于在Java应用程序中创建和管理计划任务。它允许开发者精确地安排作业,从简单的一次性任务到复杂的调度模式。Quartz 1.5.2是该项目的一个较旧版本,但它仍然包含了实现...
**Quartz** 是一款开源的任务调度框架,广泛应用于 Java 应用程序中。它的主要功能是帮助开发者以灵活的方式调度任务,支持复杂的触发规则。 - **嵌入式运行**:Quartz 可以无缝地嵌入到任何独立的应用程序中运行,...
Quartz是一款开源的作业调度...总结来说,"Quartz定时器web应用"示例展示了如何在Web环境中利用Quartz框架创建和调度定时任务。通过理解上述概念和步骤,开发者可以灵活地构建和管理定时任务,提升系统的自动化水平。
本文将深入探讨如何使用Spring整合Quartz来实现定时器,并提供相关代码示例。 首先,理解Spring框架。Spring是一个开源的Java平台,它提供了全面的企业级应用程序开发解决方案,包括依赖注入(DI)、面向切面编程...
Spring MVC、MyBatis 和 Quartz 是企业级应用开发中常用的三个技术组件,它们分别负责不同的功能领域。Spring MVC 是一个轻量级的基于模型-视图-控制器(MVC)设计模式的Web 应用框架,它使得Java开发者能够轻松地...