Search code examples
springmavenquartzcrontrigger

CronTriggerFactoryBean doesn't work with new version


I use quartz for scheduling my job (working on a maven project using Spring).

I updated quartz to the 2.3.0 version and I changed the CronTriggerBean and JobDetailBean in CronTriggerFactoryBean and JobDetailFactoryBean but with this configuration it doesn't instantiate the job at every request time like (cronexpression) it worked with the first configuration (CronTriggerBean).

Do I have to do some implementation?

quartz-context.xml

<bean id="jobImportFi01QuartzTrigger"
        class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
        <property name="group" value="xxx" />
        <property name="jobDetail" ref="jobImportFi01Quartz" />
        <property name="cronExpression" value="${jobImportFi01.cron.expression}" />
        <property name="misfireInstructionName"
            value="MISFIRE_INSTRUCTION_DO_NOTHING" />
    </bean>

    <bean id="jobImportFi01Quartz"
        class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
        <property name="group" value="xxx" />
        <property name="jobClass"
            value="com.batch.job.timdataimport.quartz.ImportJobDetail" />
        <property name="description" value="Fi01Import" />
        <property name="jobDataAsMap">
            <map>
                <entry key="jobName" value="jobImportFi01" />
            </map>
        </property>
    </bean>

Solution

  • This is what we use with Quartz 2.3.0 and it works OK:

    <bean id="job1" class="org.quartz.impl.JobDetailImpl">
      <property name="jobClass" value="com.quartzdesk.test.quartz.v2.TestJob"/>
      <property name="group" value="quartzdesk-test"/>
      <property name="name" value="Job1"/>
      <property name="description"
                value="Simple test job."/>
    
      <property name="durability" value="true"/>
    
      <property name="jobDataMap">
        <bean class="org.quartz.JobDataMap">
          <constructor-arg>
            <util:map>
              <entry key="jobKey01" value="value01"/>
            </util:map>
          </constructor-arg>
        </bean>
      </property>
    </bean>
    
    <bean id="job1Trigger"
          class="org.quartz.impl.triggers.CronTriggerImpl">
      <property name="name" value="Job1Trigger"/>
      <property name="group" value="quartzdesk-test"/>
      <property name="jobName" value="Job1"/>
      <property name="jobGroup" value="quartzdesk-test"/>
      <property name="description" value="Cron trigger that fires every 15 minutes."/>
      <property name="cronExpression" value="0 1/15 * * * ?"/>
    
      <property name="startTime" value="2016-01-01"/>
    
      <property name="calendarName" value="annualCalendar"/>
    
      <property name="jobDataMap">
        <bean class="org.quartz.JobDataMap">
          <constructor-arg>
            <util:map>
              <entry key="jobTriggerKey01" value="value01"/>
            </util:map>
          </constructor-arg>
        </bean>
      </property>
    </bean>