`

配置式Quartz实例

 
阅读更多
1、加包:

quartz-all-1.5.2.jar、commons-logging.jar、commons-digester.jar、commons-beanutils-1.7.0.jar到随便一个位置随便一个目录下,比如把这些包放到e盘底下的mylib目录下。那在工程中将此mylib目录路径加到工程classpath路径下,即可。

2、src下写个作业调度类,功能是每个一秒钟打印系统当前时间到控制台:


import java.util.Date;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class TestQuartz implements Job{

public void execute(JobExecutionContext arg0) throws JobExecutionException {
  System.out.println(new Date());
}
}

3、web.xml配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
  <servlet>
         <servlet-name>QuartzInitializer</servlet-name>
         <display-name>Quartz Initializer Servlet</display-name>
         <servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
         <load-on-startup>1</load-on-startup>
         <init-param>
             <param-name>config-file</param-name>
             <param-value>/quartz.properties</param-value>
         </init-param>
         <init-param>
             <param-name>shutdown-on-unload</param-name>
             <param-value>true</param-value>
         </init-param>
     </servlet>

  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>


这样,在启动Tomcat的时候,QuartzInitializerServlet这个Servlet就会自动读取quartz.properties这个配置文件,并初始化调度信息,启动Scheduler。


4、quartz.properties文件:

这个文件的默认名称就是quartz.properties,如果启动项目的时候,Quartz没有在工程中找到该文件,就会从自己的jar包下面读取其默认的properties文件,其内容如下:

org.quartz.scheduler.instanceName = TestScheduler
org.quartz.scheduler.instanceId = one

org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 2
org.quartz.threadPool.threadPriority = 4

org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingTriggerHistoryPlugin
org.quartz.plugin.triggHistory.triggerFiredMessage = Trigger {1}.{0} fired job {6}.{5} at: {4, date, HH:mm:ss MM/dd/yyyy}
org.quartz.plugin.triggHistory.triggerCompleteMessage = Trigger {1}.{0} completed firing job {6}.{5} at {4, date, HH:mm:ss MM/dd/yyyy} with resulting trigger instruction code: {9}

org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
org.quartz.plugin.jobInitializer.overWriteExistingJobs = false
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.plugin.shutdownhook.class = org.quartz.plugins.management.ShutdownHookPlugin
org.quartz.plugin.shutdownhook.cleanShutdown = true

上面的org.quartz.plugin.jobInitializer.fileName = quartz_job.xml是用来配置定义job文件的名称。

5、然后编写quartz_job.xml,

<?xml version="1.0" encoding="UTF-8"?>
<quartz>
<job>
    <job-detail>
      <name>testQuartz</name>
      <group>group1</group>
      <job-class>TestQuartz</job-class>
    </job-detail>
    <trigger>
      <cron>
        <name>test</name>
        <group>group1</group>
        <job-name>testQuartz</job-name>
        <job-group>group1</job-group>
        <cron-expression>0 0/1 * * * ?</cron-expression>
     </cron>
    </trigger>
</job>
</quartz>

可以看到,在配置文件中把jobdetail和trigger都作了完整的定义,并组合成一个job。下面,我们把上面两个文件都放入/WEB-INF/classes目录下,然后按照api中的说明修改一下web.xml。

7、运行结果:

2011-4-13 17:23:00 org.quartz.plugins.history.LoggingTriggerHistoryPlugin triggerFired
信息: Trigger group1.test fired job group1.testQuartz at:  17:23:00 04/13/2011
Wed Apr 13 17:23:00 CST 2011
2011-4-13 17:23:00 org.quartz.plugins.history.LoggingTriggerHistoryPlugin triggerComplete
信息: Trigger group1.test completed firing job group1.testQuartz at  17:23:00 04/13/2011 with resulting trigger instruction code: DO NOTHING
2011-4-13 17:24:00 org.quartz.plugins.history.LoggingTriggerHistoryPlugin triggerFired
信息: Trigger group1.test fired job group1.testQuartz at:  17:24:00 04/13/2011
Wed Apr 13 17:24:00 CST 2011
2011-4-13 17:24:00 org.quartz.plugins.history.LoggingTriggerHistoryPlugin triggerComplete
信息: Trigger group1.test completed firing job group1.testQuartz at  17:24:00 04/13/2011 with resulting trigger instruction code: DO NOTHING
......

8、总结:配置的好处是不必手工创建Trigger和Scheduler,Quartz可以通过配置文件来完成后台的作业调度。
分享到:
评论

相关推荐

    Quartz.NET实例

    在"WindowsFormsApplication"这个项目中,可能是一个桌面应用的示例,展示了如何在Windows Forms环境中集成Quartz.NET,创建图形界面以交互式地管理任务和调整执行周期。用户可以通过界面操作,如添加、修改和删除...

    定时任务quartz实现分组串行并行动态配置

    本篇文章将深入探讨如何利用Quartz实现定时任务的分组、串行和并行动态配置。 首先,理解Quartz的核心概念是必要的。`Job`是执行任务的基本单元,`Trigger`则决定了何时触发Job。Quartz提供了`Scheduler`来管理和...

    quartz 实例

    在实际应用中,Quartz还可以与其他技术结合,比如Spring框架,通过Spring的`QuartzJobBean`简化Job的声明式管理,或者利用持久化功能来确保在服务器重启后任务仍能按计划运行。 总的来说,Quartz提供了一个强大且...

    quartz-1.6.0.jar和quartz-all-1.6.0.jar

    Spring框架提供了一种优雅的方式来管理和配置Quartz,使得我们可以利用Spring的依赖注入特性来创建和管理Job实例。通过Spring的`SchedulerFactoryBean`,可以轻松地在Spring应用上下文中启动和停止Quartz调度器,...

    quartz和spring-quartz

    3. **编程式API**: 除了XML配置,还可以使用Spring的SchedulerAware接口或者QuartzSchedulerTask类来进行编程式的任务调度。 4. **JobStore**: Spring-Quartz支持不同的Job存储方式,如RAMJobStore(内存存储)、...

    spring quartz 集群模式

    2. **集群配置**:配置每个节点的`org.quartz.scheduler.instanceId`为自动获取(`AUTO`),这样Quartz会根据机器的唯一标识自动生成实例ID。 3. **共享状态**:确保所有节点都连接到同一个数据库,并且有相同的...

    Quartz使用小结

    4. **使用`quartz.properties`** - 虽然可以通过Spring配置,但也可以通过`quartz.properties`文件来配置Quartz,如数据库连接、线程池大小等。 四、示例 创建一个简单的Job和Trigger: ```java public class ...

    Quartz集群配置.doc

    3. **组件式侦听器和插件**:Quartz 支持组件式的侦听器,允许开发者监听调度事件,如任务开始、结束等。此外,它还提供了丰富的插件扩展,增强了框架的功能和可定制性。 4. **线程池管理**:为了高效管理资源,...

    quartz 1.7.3

    2. **声明式任务**: Spring与Quartz结合,可以使用`@DisallowConcurrentExecution`和`@PersistJobDataAfterExecution`注解来控制任务的并发执行策略和数据持久化。 3. **定义作业和触发器**: 通过实现`org.quartz....

    spring整合quartz的简单成功案例

    通过深入学习和实践这个案例,你可以了解到如何在Spring中声明式地管理定时任务,如何配置Quartz的属性,以及如何根据不同的需求创建不同的Job和Trigger。这将对构建基于Java的定时任务系统提供宝贵的实践经验。

    quartz-jar.7z

    6. **Spring整合**:通过Spring的QuartzJobBean和JobDetailFactoryBean,可以方便地将Quartz与Spring整合,实现声明式任务调度。这样,你可以直接将Spring的bean作为Job来执行,无需手动创建Job实例。 7. **集群...

    Spring-Quartz

    通过Spring的bean定义,我们可以声明式地配置Job和Trigger,避免了直接操作Quartz的API。 3. **配置Quartz**: 在Spring的配置文件中,我们需要配置SchedulerFactoryBean来启动Quartz调度器。这通常包括设置数据源...

    quartz15个例子

    - 编程式配置:在代码中创建和启动 Scheduler,更灵活但需注意线程安全。 6. **实战应用** - 示例可能包含一个完整的 Web 应用程序,展示了如何在 Spring 或其他框架中集成 Quartz。 每个示例通常会包含一个 Job...

    quartz需要的jar

    10. **集成Spring**:Quartz可以无缝集成到Spring框架中,通过Spring的声明式方式配置Job和Trigger,使得任务调度更加灵活。 在实际开发中,"quartz所需jar"可能包括但不限于以下文件:quartz.jar(核心库),可能...

    quartz定时任务

    - **集群支持**:Quartz支持多个服务器实例形成集群,当一个服务器实例故障时,其他实例能接管任务执行,提供高可用性。 2. **配置Quartz** - 首先,我们需要在项目中引入Quartz的依赖库,这通常通过Maven或...

    quartz-2.2.3-官方文档数据及PDM表结构.zip

    7. **API使用**:Quartz提供了丰富的API,例如`Scheduler`接口、`JobDetail`类、`Trigger`接口等,开发者可以通过这些API来编程式地操作调度器。 8. **配置(Configuration)**:Quartz的配置主要通过`quartz....

    spring_quartz项目可以直接运行

    1. **配置 Quartz**:在 Spring 配置文件中,需要配置 Scheduler 实例,定义 Job 和 Trigger,以及它们之间的关联。 2. **编写 Job**:创建一个实现了 org.quartz.Job 接口的类,重写 execute 方法,定义任务的具体...

    Quartz作业调度框架

    Quartz工具插件提供了更多实用的工具,比如用于监控和管理Quartz实例的工具。 Quartz的远程功能使得开发者可以将Quartz调度器以远程服务的形式部署在不同的系统或应用服务器之间。这在大型分布式系统中非常有用,...

    Quartz在Spring中动态设置cronExpression

    Spring提供了一套机制来创建、管理和销毁Quartz中的Scheduler实例、Jobs和Triggers,这使得开发人员无需直接处理复杂的Quartz配置代码,而是可以通过XML或Java配置来声明式地定义这些组件。 #### 2. CronTrigger与...

    quartz所需的jar包

    1. **灵活性**:Quartz允许你以程序化或声明式的方式来定义作业和触发器。你可以设置一次性任务,也可以创建复杂的调度规则,如每天、每周、甚至更复杂的周期性任务。 2. **可伸缩性**:Quartz设计为多线程并支持...

Global site tag (gtag.js) - Google Analytics