Quartz定时任务学习(二)web应用

来源:互联网 发布:免费音乐相册制作软件 编辑:程序博客网 时间:2024/06/05 08:37

web中使用Quartz

1、首先在web.xml文件中加入 如下内容(根据自己情况设定)

在web.xml中添加QuartzInitializerServlet,Quartz为能够在web应用中使用,提供了一个QuartzInitializerServlet和一个QuartzInitializerListener,用于在加载web应用时,对quartz进行初始化。

   <servlet>
         <servlet-name>
             QuartzInitializer
         </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>

2、quartz.properties文件的配置,内容如下:

上面提到了quartz.properties,这是自行指定的,Quartz提供了一个默认的配置文件,可以满足基本的j2se应用,如果在web应用中,我们想把job,trigger配置都写到文件中,就需要自己来写,并指定在初始化时加载我们自己的quratz.properties,位置放在classes下。

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.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

属性的介绍

1.调度器属性:分别设置调度器的实例名(instanceName) 和实例 ID (instanceId)。属性 org.quartz.scheduler.instanceName 可以是你喜欢的任何字符串。默认名字一般都采用QuartzScheduler,第二个属性org.quartz.scheduler.instanceIdinstaneName 属性一样,instanceId 属性也允许任何字符串。这个值必须是在所有调度器实例中是唯一的,尤其是在一个集群当中。假如你想 Quartz 帮你生成这个值的话,可以设置为 AUTO

2、线程池属性:这些线程在 Quartz 中是运行在后台担当重任的。threadCount 属性控制了多少个工作者线程被创建用来处理 Job。原则上是,要处理的 Job 越多,那么需要的工作者线程也就越多。threadCount 的数值至少为 1。Quartz 没有限定你设置工作者线程的最大值,但是在多数机器上设置该值超过100的话就会显得相当不实用了,特别是在你的 Job 执行时间较长的情况下。这项没有默认值,所以你必须为这个属性设定一个值。

threadPriority 属性设置工作者线程的优先级。优先级别高的线程比级别低的线程更优先得到执行。threadPriority 属性的最大值是常量 Java.lang.Thread.MAX_PRIORITY,等于10。最小值为常量 java.lang.Thread.MIN_PRIORITY,为1。这个属性的正常值是Thread.NORM_PRIORITY,为5。大多情况下,把它设置为5,这也是没指定该属性的默认值。

最后一个要设置的线程池属性是 org.quartz.threadPool.class。这个值是一个实现了 org.quartz.spi.ThreadPool 接口的类的全限名称。Quartz 自带的线程池实现类是 org.quartz.smpl.SimpleThreadPool,它能够满足大多数用户的需求。这个线程池实现具备简单的行为,并经很好的测试过。它在调度器的生命周期中提供固定大小的线程池。你能根据需求创建自己的线程池实现,如果你想要一个随需可伸缩的线程池时也许需要这么做。这个属性没有默认值,你必须为其指定值。

3、作业存储属性:作业存储部分的设置描述了在调度器实例的生命周期中,Job 和 Trigger 信息是如何被存储的。把调度器信息存储在内存中非常的快也易于配置。当调度器进程一旦被终止,所有的 Job 和 Trigger 的状态就丢失了。要使 Job 存储在内存中需通过设置 org.quartz.jobStrore.class 属性为 org.quartz.simpl.RAMJobStore,在Cron Trigger 和“作业存储和持久化”会用到的不同类型的作业存储实现。

4、其他插件属性:org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin默认时,JobInitializationPlugin插件会在 classpath 中搜索名为 quartz_jobs.xml 的文件并从中加载 Job 和 Trigger 信息。


3、 quartz_job.xml文件配置,内容如下:

quartz要使用插件来加载自己的xml配置文件,上面指定加载classes/quartz_job.xml文件。

以Quartz定时任务学习(一)中的简单作业SimpleQuartzJob为例子:

 

<?xml version="1.0" encoding="UTF-8"?>
<quartz>

<job>
    <job-detail>
      <name>listener1</name>
      <group>group1</group>
      <job-class>SimpleQuartzJob</job-class>

    </job-detail>
    <trigger>
      <cron>
        <name>job1</name>
        <group>group1</group>
        <job-name>listener1</job-name>
        <job-group>group1</job-group>
        <cron-expression>0/10 * * * * ?</cron-expression>
     </cron>
    </trigger>
</job>

</quartz>

实例:简单触发器

  1. <?xml version='1.0' encoding='utf-8'?>  
  2. <quartz>  
  3.   <job>  
  4.     <job-detail>  
  5.      <name>ScanDirectory</name>  
  6.      <group>DEFAULT</group>  
  7.      <description>  
  8.            A job that scans a directory for files   
  9.      </description>  
  10.      <job-class>  
  11.              org.cavaness.quartzbook.chapter3.ScanDirectoryJob   
  12.      </job-class>  
  13.      <volatility>false</volatility>  
  14.      <durability>false</durability>  
  15.      <recover>false</recover>  
  16.      <job-data-map allows-transient-data="true">  
  17.          <entry>  
  18.          <key>SCAN_DIR</key>  
  19.          <value>c:/quartz-book/input</value>  
  20.        </entry>  
  21.      </job-data-map>  
  22.     </job-detail>  
  23.     <trigger>  
  24.      <simple>  
  25.        <name>scanTrigger</name>  
  26.        <group>DEFAULT</group>  
  27.        <job-name>ScanDirectory</job-name>  
  28.        <job-group>DEFAULT</job-group>  
  29.        <start-time>2005-06-10 6:10:00 PM</start-time>  
  30.        <!-- repeat indefinitely every 10 seconds -->  
  31.        <repeat-count>-1</repeat-count>  
  32.        <repeat-interval>10000</repeat-interval>  
  33.      </simple>  
  34.     </trigger>  
  35.   </job>  
  36. </quartz>



原创粉丝点击