`
huanyq2008
  • 浏览: 166549 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

用 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>test.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.8.3\docs\dbTables中有sql脚本
   9. OK,部署,运行

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics