java - cron 调度程序在调度程序的预定时间被调用两次
问题描述
这是 cron 调度程序的 bean 代码。runMeTask 和 runMeJob 的声明
<bean id="runMeTask" class="com.ascent.fieldomobify.cornScheduler.RunMeTask"/>
<bean name="runMeJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass" value="com.ascent.fieldomobify.cornScheduler.RunMeJob" />
<property name="jobDataAsMap">
<map>
<entry key="runMeTask" value-ref="runMeTask" />
</map>
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="runMeJob"/>
<property name="cronExpression" value="0 0 13 * * ?" />
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronTrigger" />
</list>
</property>
</bean>
它直接从bean调度器配置 中调用第一类是RunMeJob
public class RunMeJob extends QuartzJobBean {
private RunMeTask runMeTask;
public void setRunMeTask(RunMeTask runMeTask) {
this.runMeTask = runMeTask;
}
protected void executeInternal(JobExecutionContext context)
throws JobExecutionException {
try {
runMeTask.printMe();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
在这里我调用控制器的方法,该方法具有逻辑 第二类 RunMeTask
public class RunMeTask{
@Autowired
WorkOrderController workorderContoller;
public void setWorkorderContoller(WorkOrderController workorderContoller) {
this.workorderContoller = workorderContoller;
}
public void printMe() throws ParseException {
workorderContoller.printSysOut();
}
}
解决方案
在某些情况下您可以获得该行为,请检查此线程:Java Spring @Scheduled tasks execution two
推荐阅读
- c++ - C++ 程序问题:在抛出 'std::invalid_argument' 的实例后调用终止
- python - `np.where` 的奇怪用法
- puppet - Puppet 使用多路径配置 iSCSI
- python - 是否有与 R 的 Hmisc 包中的 spearman2 函数等效的 Python?
- php - 尝试在 php 中将新用户发布到我的 cUrl 测试环境时出现错误
- firemonkey - 读取二进制数据
- javascript - 更改元素时自动保存
- javascript - svg 转换属性正在放置带有间隙的元素
- php - 如何打印 PHP 中的值,这些值以数组格式存储在 mysql 中同名
- bluetooth-lowenergy - 如何在后台运行连接到 BLE 外围设备的 watchOS 应用程序?