Caucho Technology
  • resin 4.0
  • scheduled task


    Resin's <resin:ScheduledTask> capability lets you schedule events using a flexible cron-style trigger. The task can be any Runnable bean, a method specified by EL, or a URL.

    <resin:ScheduledTask>

    <resin:ScheduledTask> schedules a job to be executed at specific times or after specific delays. The times can be specified by a cron syntax or by a simple delay parameter. The job can be either a Runnable bean, a method specified by an EL expression, or a URL.

    When specified as an Java Injection bean, the bean task has full IoC capabilities, including injection, @TransactionAttribute aspects, interception and @Observes.

    <resin:ScheduledTask> Attributes
    ATTRIBUTEDESCRIPTION
    classthe classname of the singleton bean to create
    crona cron-style scheduling description
    delaya simple delay-based execution
    initIoC initialization for the bean
    mbean-nameoptional MBean name for JMX registration
    methodEL expression for a method to be invoked as the task
    nameoptional IoC name for registering the task
    periodhow often the task should be invoked in simple mode
    taskalternate task assignment for predefined beans

    Java Injection bean job configuration

    The most common and flexible job configuration uses standard IoC bean-style configuration. The bean must implement Runnable. The <task> element specifies the bean, using standard Java injection syntax as described in Java Injection configuration.

    Example: 5min cron bean task
    <web-app xmlns="http://caucho.com/ns/resin"
          xmlns:resin="urn:java:com.caucho.resin">
    
      <resin:ScheduledTask>
        <cron>*/5</cron>
        <task>
          <qa:MyTask xmlns:qa="urn:java:com.caucho.resin"/>
        </task>
      </ScheduledTask>
    
    </web-app>
    

    task reference job configuration

    The task bean can also be passed to the <scheduled-task> using a Resin-IoC EL reference. The name of the task bean would be defined previously, either in a <bean> or <component> or picked up by classpath scanning. Like the bean-style job configuration, the reference bean must implement Runnable.

    Example: midnight cron bean task
    <web-app xmlns="http://caucho.com/ns/resin"
             xmlns:resin="urn:java:com.caucho.resin">
    
      <resin:ScheduledTask task="#{taskBean}">
        <cron>0 0 *</cron>
      </resin:ScheduledTask>
    
    </web-app>
    

    method reference job configuration

    <scheduled-task> can execute a method on a defined bean as the scheduler's task. The method is specified using EL reference syntax. At each trigger time, <scheduled-task> will invoke the EL method expression.

    In the following example, the task invokes myMethod() on the myBean singleton every 1 hour.

    Example: 1h period method task
    <web-app xmlns="http://caucho.com/ns/resin"
      xmlns:resin="urn:java:com.caucho.resin"
      xmlns:qa="urn:java:qa">
    
      <qa:MyBean>
        <Named>myBean</Named>
      </qa:MyBean>
    
      <resin:ScheduledTask method="#{myBean.myMethod}">
        <resin:delay>10m</resin:delay>
        <resin:period>1h</resin:period>
      </resin:ScheduledTask>
    
    </web-app>
    

    url job configuration

    In a <web-app>, the <scheduled-task> can invoke a servlet URL at the trigger times. The task uses the servlet RequestDispatcher and forwards to the specified URL. The URL is relative to the <web-app> which contains the <scheduled-task.

    Example: sunday cron url task
    <web-app xmlns="http://caucho.com/ns/resin"
      xmlns:resin="urn:java:com.caucho.config">
    
      <resin:ScheduledTask url="/cron.php">
        <resin:cron>0 15 * * 0</resin:cron>
      </resin:ScheduledTask>
    
    </web-app>
    

    cron trigger syntax

    Some ascii art from the wikipedia cron entry

    cron fields
    # +---------------- minute (0 - 59)
    # |  +------------- hour (0 - 23)
    # |  |  +---------- day of month (1 - 31)
    # |  |  |  +------- month (1 - 12)
    # |  |  |  |  +---- day of week (0 - 6) (Sunday=0 or 7)
    # |  |  |  |  |
      *  *  *  *  *
    
    cron patterns
    PATTERNDESCRIPTION
    *matches all time periods
    15matches the specific time, e.g. 15 for minutes
    15,45matches a list of times, e.g. every :15 and :45
    */5matches every n times, e.g. every 5 minutes
    1-5matches a range of times, e.g. mon, tue, wed, thu, fri (1-5)

    Each field specifies a range of times to be executed. The patterns allowed are:

    example ranges
    RANGEEXPLANATION (USING MINUTES AS EXAMPLE)
    *run every minute
    */5run every 5 minutes
    0,5,50run at :00, :05, :50 every hour
    0-4run at :00, :01, :02, :03, :04
    0-30/2run every 2 minutes for the first half hour

    The minutes field is always required, and the hours, days, and months fields are optional.

    example times
    RANGEEXPLANATION
    0 */3run every 3 hours
    15 2 *run every day at 0215 local time
    0 0 */3run every third day at midnight
    15 0 * * 6run every Saturday at 0015

    Copyright © 1998-2011 Caucho Technology, Inc. All rights reserved.
    Resin ® is a registered trademark, and Quercustm, Ambertm, and Hessiantm are trademarks of Caucho Technology.