`
hai0378
  • 浏览: 529632 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

用 Quartz 进行作业调度

 
阅读更多

用 Quartz 进行作业调度

Quartz 是个开源的作业调度框架,
为在 Java 应用程序中进行作业调度提供了简单却强大的机制。
Quartz 允许开发人员根据时间间隔(或天)来调度作业。
它实现了作业和触发器的多对多关系,还能把多个作业与不同的触发器关联。
整合了 Quartz 的应用程序可以重用来自不同事件的作业,
还可以为一个事件组合多个作业。


   1. 下载 Quartz API。
   2. 新建web项目
   3. 解压缩并把 quartz-x.x.x.jar、core 和/或 optional 文件夹中的 jar 文件和optional 文件夹中的 jar 文件 放在项目lib文件夹内。如果使用 JDBCJobStore,把所有的 JDBC jar 文件放在项目的lib文件夹。
   4. 新建java类作为一个job,必须实现org.quartz.Job接口
      public class SimpleJob implements Job {

          public void execute(JobExecutionContext context) throws JobExecutionException {
              System.out.println("In SimpleQuartzJob - executing its JOB at "
                      + new Date() + " by " + context.getTrigger().getName()); 
          }
      }
   5. 在src下新建quartz_job.xml,<cron-expression>0/2 * * * * ?</cron-expression>配置从0秒开始每两秒执行一次
      <?xml version="1.0" encoding="UTF-8"?>
      <quartz>
          <job>
              <job-detail>
                  <name>job1</name>
                  <group>job</group>
                  <job-class>com.capinfo.job.SimpleJob</job-class>
              </job-detail>
              <trigger>
                  <cron>
                      <name>t1</name>
                      <group>job</group>
                      <job-name>job1</job-name>
                      <job-group>job</job-group>
                      <cron-expression>0/2 * * * * ?</cron-expression>
                  </cron>
              </trigger>
          </job>
      </quartz>
   6. 在web.xml中加入:
      <servlet>
          <servlet-name>quartz</servlet-name>
          <servlet-class>
              org.quartz.ee.servlet.QuartzInitializerServlet
          </servlet-class>
          <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>
          <load-on-startup>1</load-on-startup>
      </servlet>
   7. 在src下新建quartz.properties
      #########################################################################

      #============================================================================
      # Configure Main Scheduler Properties
      #============================================================================

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

      #============================================================================
      # Configure ThreadPool
      #============================================================================

      org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
      org.quartz.threadPool.threadCount = 5
      org.quartz.threadPool.threadPriority = 5

      #============================================================================
      # Configure JobStore
      #============================================================================

      #org.quartz.jobStore.misfireThreshold = 60000

      org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
      org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.MSSQLDelegate
      #org.quartz.jobStore.useProperties=false
      org.quartz.jobStore.dataSource=myDS
      #org.quartz.jobStore.tablePrefix=QRTZ_
      #org.quartz.jobStore.isClustered=true

      #============================================================================
      # Other Example Delegates
      #============================================================================
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.CloudscapeDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DB2v6Delegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DB2v7Delegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.DriverDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.HSQLDBDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.MSSQLDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PointbaseDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.WebLogicDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.OracleDelegate
      #org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.oracle.WebLogicOracleDelegate

      #============================================================================
      # Configure Datasources
      #============================================================================

      org.quartz.dataSource.myDS.driver = com.microsoft.sqlserver.jdbc.SQLServerDriver
      org.quartz.dataSource.myDS.URL = jdbc:sqlserver://localhost:1433;;DatabaseName=quartzdb;autoReconnect=true
      org.quartz.dataSource.myDS.user = sa
      org.quartz.dataSource.myDS.password = 123456
      org.quartz.dataSource.myDS.maxConnections = 5
      org.quartz.dataSource.myDS.validationQuery=

      #============================================================================
      # Configure Plugins
      #============================================================================

      org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin

      org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
      org.quartz.plugin.jobInitializer.fileName = quartz_job.xml
      org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
      org.quartz.plugin.jobInitializer.failOnFileNotFound = true
      org.quartz.plugin.jobInitializer.scanInterval = 10
      org.quartz.plugin.jobInitializer.wrapInUserTransaction = false



      #org.quartz.plugin.shutdownHook.class = org.quartz.plugins.management.ShutdownHookPlugin
      #org.quartz.plugin.shutdownHook.cleanShutdown = true


      #org.quartz.plugin.triggHistory.class = org.quartz.plugins.history.LoggingJobHistoryPlugin
   8. 初始化数据库表,在\quartz-1.6.5\docs\dbTables中有sql脚本
   9. OK,部署,运行
分享到:
评论

相关推荐

    Quartz(作业调度)

    Quartz是一款开源的作业调度框架,它为Java应用程序提供了强大的定时任务处理能力。在Spring框架中,Quartz可以被集成来实现复杂的定时任务调度。本文将深入探讨Quartz的使用,包括其基本概念、配置、API以及在Web...

    quartz开源作业调度框架

    ### quartz开源作业调度框架知识点详解 #### 一、Quartz框架简介 Quartz是一个功能强大的、开源的作业调度框架,完全由Java编写而成。它能够被应用在服务器端的Java应用程序中,帮助开发者轻松地创建并管理定时任务...

    Quartz - 作业调度框架

    使用Quartz进行作业调度,首先需要创建Job类,这个类实现了`org.quartz.Job`接口,并重写`execute(JobExecutionContext context)`方法,这个方法包含了任务的具体逻辑。然后,需要创建Trigger,设定触发条件。最后,...

    spring-Quartz(作业调度)

    Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的...

    作业调度Quartz.net源代码

    这个“作业调度Quartz.net源代码”文件很可能是包含了Quartz.NET的示例代码或者一个简单的项目,帮助用户理解和学习如何使用Quartz.NET进行作业调度。 Quartz.NET的核心概念包括作业(Job)、触发器(Trigger)和...

    Quartz.net作业调度自定义定时执行任务多任务执行c#

    在"Quartz.net作业调度自定义定时执行任务多任务执行c#"这个主题中,我们将深入探讨如何使用Quartz.NET来实现自定义的定时任务,以及如何处理多任务执行。 首先,我们需要理解Quartz.NET的基本概念。在Quartz.NET中...

    Quartz作业调度框架

    Quartz作业调度框架是Java领域中非常重要的一个开源作业调度库。作业调度是指在预定的时间安排特定的任务进行执行。在企业级应用中,作业调度扮演着核心的角色,它使得企业能够自动化地执行定时任务,比如数据备份、...

    学习笔记_Quartz作业调度框架,使用corn表达式

    Quartz作业调度框架是Java开发中的一个强大工具,用于实现定时任务和工作流管理。它以其灵活性、可扩展性和稳定性而被广泛应用。本学习笔记主要围绕Quartz的使用,特别是如何利用corn表达式来设置定时任务。 Quartz...

    quartz作业调度测试

    这个"quartz作业调度测试"项目可能是为了演示或测试Quartz如何在实际应用中配置和使用。 首先,Quartz的核心概念包括Job(作业)、Trigger(触发器)和Scheduler(调度器)。Job是需要执行的任务,Trigger定义了...

    Quartz作业调度器

    Quartz作业调度器是Java平台上的一个开源任务调度框架,广泛应用于企业级应用中,用于自动化执行周期性任务。Spring框架提供了对Quartz的集成,使得在Spring应用中使用Quartz变得更加便捷。这个压缩包文件可能包含了...

    Quartz一个开源作业调度框架

    Quartz 是一个强大的开源作业调度框架,主要用于自动化执行任务,如定时发送邮件、执行数据清理、执行批处理等。该框架完全用 Java 编写,兼容 J2SE 和 J2EE 环境,提供了丰富的功能和灵活性,使得开发者能够方便地...

    Quartz一个开源的作业调度框架

    Quartz是一个广泛应用于企业级应用中的开源作业调度框架,它为开发者提供了强大的任务调度功能,使得应用程序能够在预定的时间执行特定的任务。Quartz的核心设计目标是简单易用且可高度扩展,能够满足从小型项目到...

    quartz作业调度Demo

    Quartz作业调度是一个开源的...在"quartz作业调度Demo"中,你可以学习如何创建和运行一个基本的Quartz任务,以及如何通过CronTrigger进行定时调度。通过实践,你将更好地理解Quartz的运作机制和其在实际项目中的应用。

    Quartz开源作业调度库 v2.3.2.zip

    Quartz是一款广泛应用于Java环境中的开源作业调度库,它的主要功能是允许开发者安排任务在特定的时间执行,从而实现系统的自动化工作流程。版本2.3.2是对Quartz库的一个稳定更新,提供了诸多改进和修复,使得它在...

    quartz作业调度demo

    本示例"quartz作业调度demo"是针对初学者设计的,旨在帮助他们快速理解并上手Quartz的基本用法。 Quartz的核心概念包括Job(作业)、Trigger(触发器)和Scheduler(调度器)。以下是对这些关键概念的详细解释: 1...

    quartz动态定时调度完整代码

    Quartz是一款开源的作业调度框架,它允许开发者创建、组织和执行定时任务。在Java开发环境中,Quartz被广泛用于实现应用程序的自动化任务调度。这个压缩包“quartz动态定时调度完整代码”提供了使用Quartz进行动态...

Global site tag (gtag.js) - Google Analytics