我坚持尝试使用弹簧2.5&amp ;;每分钟发射一次预定的任务。石英1.6.2
显然这个bean已经启动并很好地打印出“工作正常”以便std out, 但是工作似乎没有被执行 - 没有打印出来的字符串来记录 (输出中没有“hello quartz”)。
我的xml文件是:
<bean id="scheduler"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup">
<value>true</value>
</property>
</bean>
<bean id="UpdateDBWatchdog" class="com.db.update.task.watchdog.UpdateDBWatchdog"
lazy-init="false" init-method="init">
<constructor-arg ref="scheduler" />
</bean>
我的代码是:
import org.quartz.CronExpression;
import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.Scheduler;
public class UpdateDBWatchdog {
private Scheduler scheduler;
public UpdateDBWatchdog(Scheduler scheduler) {
this.scheduler = scheduler;
}
public void init() {
try {
CronTrigger ct = new CronTrigger();
ct.setName("dummyTriggerName");
String expression = "* * * * * ?";
boolean valid = CronExpression.isValidExpression(expression);
if (valid) {
ct.setCronExpression(expression);
} else {
throw new RuntimeException();
}
JobDetail job = new JobDetail();
job.setName("dummyJobName");
job.setJobClass(HelloJob.class);
scheduler.scheduleJob(job, ct);
scheduler.start();
System.out.println("Works fine!");
} catch (Exception e) {
e.printStackTrace();
}
}
private class HelloJob implements Job {
@Override
public void execute(JobExecutionContext arg0) throws JobExecutionException {
System.out.println("Hello Quartz!");
}
}
}
答案 0 :(得分:3)
可能你得到java.lang.InstantiationException
因为quartz正在尝试实例化内部类(explanation)。
在outter类中将您的HelloJob
声明为 static 类,或从UpdateDBWatchdog
类中退出并在自己的文件中声明。