2

私は奇妙な問題に取り組んでいて、私を狂わせています。

私はここで素晴らしいチュートリアルに従いました:http ://www.mkyong.com/spring/spring-quartz-scheduler-example/

cronトリガーを選択し、午前10時45分に実行するように変更しました。ただし、ジョブが開始されると、ループが発生し、同じメッセージが何度も出力されます。

これが私のソフトウェアです:

  • 春:3.0.5
  • クォーツ:1.8.5
  • java:1.6.31

上記のチュートリアルに付属しているspring-quartz.xmlは変更していません(cron式を除く)。

編集済み(beans xmlコンテンツを追加):

<bean id="runMeTask" class="com.test.RunMeTask" />
<bean name="runMeJob"
class="org.springframework.scheduling.quartz.JobDetailBean">

    <property name="jobClass" value="com.test.RunMeJob" />

    <property name="jobDataAsMap">
        <map>
            <entry key="runMeTask" value-ref="runMeTask" />
        </map>
    </property>

</bean>
<!-- Simple Trigger -->
<bean id="simpleTrigger"
    class="org.springframework.scheduling.quartz.SimpleTriggerBean">

    <property name="jobDetail" ref="runMeJob" />
    <property name="repeatInterval" value="5000" />
    <property name="startDelay" value="1000" />

</bean>
<!-- Cron Trigger -->
<bean id="cronTrigger"
    class="org.springframework.scheduling.quartz.CronTriggerBean">

    <property name="jobDetail" ref="runMeJob" />
    <property name="cronExpression" value="* 45 10 * * ?" />

</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="jobDetails">
        <list>
        <ref bean="runMeJob" />
        </list>
    </property>
    <property name="triggers">
        <list>
        <ref bean="cronTrigger" />
        </list>
    </property>
</bean>

編集済み(追加されたコードジョブとタスクコード):

public class RunMeTask 
{
public void printMe() {
    try{
    System.out.println("Run Me ~");
    }
    catch(Exception e){
        e.printStackTrace();
    }
}
}

これはジョブクラスです

public class RunMeJob extends QuartzJobBean
 {
private RunMeTask runMeTask;

public void setRunMeTask(RunMeTask runMeTask) {
    this.runMeTask = runMeTask;
}

protected void executeInternal(JobExecutionContext context){
    try{

    runMeTask.printMe();
    }
    catch(Exception e){
            e.printStackTrace();
    }

}
  } 
4

1 に答える 1

4

なぜそれが間違っていると思いますか?

<property name="cronExpression" value="* 45 10 * * ?" />

このCRON式は次のことを意味します。毎日10:45にジョブを実行します 毎日10:45の毎秒にジョブを実行します(最初のアスタリスクは2番目です)。設計どおりに動作します。おそらくあなたの場合(一度に1回実行する)のSimpleTrigger方が適しています(:を参照SimpleTriggerBean)。

更新:毎日10:45に1回ジョブを実行する場合、これは正しい式です。

<property name="cronExpression" value="0 45 10 * * ?" />
于 2012-04-30T06:54:21.403 に答える