博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Quartz 框架快速入门(三)
阅读量:6615 次
发布时间:2019-06-24

本文共 4689 字,大约阅读时间需要 15 分钟。

转载 http://www.cnblogs.com/phinecos/archive/2008/09/03/1283103.html 

 在前面两篇文章中简单介绍了在java应用程序中如何使用Quartz框架,这一篇中我们将看到如何在web环境下通过配置文件来完成Quartz的后台作业调度,而不必手工去创建TriggerScheduler,其步骤如下:

首先创建一个Web项目,将quartz-1.6.0.jar,以及lib目录下面core下所有jaroptional目录下的所有commons-beanutils.jarcommons-digester-1.7.jarbuild目录下的jta.jar都放入Web项目的WEB-INF"lib目录下。

创建一个简单的jobHelloWorld,它的功能很简单,就是输出当前的时间,代码如下:

package
 com.vista.quartz;
import
 java.util.Date;
import
 org.apache.commons.logging.Log;
import
 org.apache.commons.logging.LogFactory;
import
 org.quartz.Job;
import
 org.quartz.JobExecutionContext;
import
 org.quartz.JobExecutionException;
public 
class
 Helloworld 
implements
 Job
{
    
private 
static
 Log logger 
=
 LogFactory.getLog(Helloworld.
class
);
//
日志记录器
    
public
 Helloworld()
    {
    }
    
public 
void
 execute(JobExecutionContext context) 
throws
 JobExecutionException 
    {
        logger.info(
"
Hello World! - 
" 
+ 
new
 Date()); 
    }
}

然后按照上一篇文章《》中所讲述的内容编写quartz.properties文件。如果启动项目的时候,Quartz没有在工程中找到该文件,就会从自己的jar包下面读取其默认的properties文件,其内容如下

#============================================================================
# Configure Main Scheduler Properties  
#============================================================================
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO
#============================================================================
# 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.simpl.RAMJobStore
#============================================================================
# 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.fileNames = jobs.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

然后编写任务配置文件jobs.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"
  xsi:schemaLocation
="http://www.opensymphony.com/quartz/JobSchedulingData
  http://www.opensymphony.com/quartz/xml/job_scheduling_data_1_5.xsd"
  version
="1.5"
>
   
 
<
job
>
      
    
<
job-detail
>
      
     
<
name
>
HelloWorld
</
name
>
      
     
<
group
>
DEFAULT
</
group
>
      
     
<
description
>
      
           A job that just for test       
     
</
description
>
      
     
<
job-class
>
      
            com.vista.quartz.Helloworld      
     
</
job-class
>
      
     
<
volatility
>
false
</
volatility
>
      
     
<
durability
>
false
</
durability
>
      
     
<
recover
>
false
</
recover
>
          
  
</
job-detail
>
      
  
<
trigger
>
      
    
<
simple
>
      
     
<
name
>
HelloTrigger1
</
name
>
      
     
<
group
>
DEFAULT
</
group
>
      
     
<
job-name
>
HelloWorld
</
job-name
>
      
     
<
job-group
>
DEFAULT
</
job-group
>
      
     
<
start-time
>
2008-09-03T15:56:30
</
start-time
>
      
     
<!--
 repeat indefinitely every 10 seconds 
-->
      
     
<
repeat-count
>
-1
</
repeat-count
>
      
     
<
repeat-interval
>
10000
</
repeat-interval
>
      
    
</
simple
>
      
  
</
trigger
>
      
</
job
>
      
</
quartz
>

可以看到,在配置文件中把jobdetailtrigger都作了完整的定义,并组合成一个job。下面,我们把上面两个文件都放入/WEB-INF/classes目录下,然后按照api中的说明修改一下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

启动tomcat后,就可以看到输出的结果:

你可能感兴趣的文章
[裴礼文数学分析中的典型问题与方法习题参考解答]5.1.24
查看>>
8.5. profile
查看>>
C语言 编程练习22题
查看>>
Log4Net 生成多个文件、文件名累加解决方法
查看>>
oracle 包,函数,过程,块的创建和执行及在java中执行(转)
查看>>
CloudDBA现场助力双十一
查看>>
虚拟现实技术或会产生副作用
查看>>
【云图】如何设置微信里的全国实体店地图?
查看>>
db file async I/O submit 等待事件优化
查看>>
前端需要了解的 SSO 与 CAS 知识
查看>>
李开复谈未来工作:虽然会被AI取代,但谁说人类非得工作不可?
查看>>
PostgreSQL 空间切割(st_split)功能扩展 - 空间对象网格化
查看>>
Intercom的持续部署实践:一天部署100次,1次10分钟
查看>>
SpringBoot权限控制
查看>>
阿里云中间件技术 促进互联网高速发展
查看>>
智能时代悄然到来 物联网称王将引爆传感器产业
查看>>
物理隔离计算机被USB蜜蜂刺破 数据通过无线信号泄露
查看>>
利用一点机器学习来加速你的网站
查看>>
中国域名现状:应用水平较低,安全仍存隐患
查看>>
Java中HashMap的原理分析
查看>>