Java 搜索Quartz scheduler的DBJobStore中存储的现有作业时出现问题
我正在使用Quartz scheduler的DB Job Store定期安排我的运行。为了获取所有现有作业及其状态,我使用以下代码:Java 搜索Quartz scheduler的DBJobStore中存储的现有作业时出现问题,java,quartz-scheduler,Java,Quartz Scheduler,我正在使用Quartz scheduler的DB Job Store定期安排我的运行。为了获取所有现有作业及其状态,我使用以下代码: for(String jobGroupName : scheduler.getJobGroupNames() { for(String jobName : scheduler.getjobNames(jobGroupName) { JobDetail jobDetail = scheduler.getJobDetai
for(String jobGroupName : scheduler.getJobGroupNames() {
for(String jobName : scheduler.getjobNames(jobGroupName) {
JobDetail jobDetail = scheduler.getJobDetail(jobName, jobGroupName);
Trigger[] triggers = scheduler.getTriggersOfJob(jobName, jobGroupName);
Trigger trigger = triggers[0];
int jobState = scheduler.getTriggerState(trigger.getName(), trigger.getGroup());
}
}
我还实现了如下的作业界面
public class jobImpl implements Job {
public void execute(JobExecutionContext arg) {
// My Code
}
}
当我调用获取现有作业及其状态的代码时(第一个代码示例),jobImpl中的execute方法会被触发
有人能帮我解决这个问题吗
@托马斯兹
以下是堆栈跟踪:
java.lang.NullPointerException
[junit] at com.JobImpl.execute(JobImpl.java:24)
[junit] at org.quartz.core.JobRunShell.run(JobRunShell.java:216)
[junit] at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)
您是否能够在
jobImpl.execute()
内设置断点,并从调试器粘贴stacktrace(甚至是屏幕截图)?我想看看这个方法是如何被触发的……嗨,Tomasz,这里是堆栈跟踪:java.lang.NullPointerException[junit],位于com.JobImpl.execute(JobImpl.java:24)[junit],位于org.quartz.core.JobRunShell.run(JobRunShell.java:216)[junit]位于org.quartz.siml.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)您使用的是哪个版本的Quartz?您是否确定您的代码触发了作业?stacktrace看起来像一个普通的计划作业执行。您的问题中的哪一行代码触发了作业?您可以有选择地注释它们吗?我使用的是Quartz-1.0。作业是从代码中的多个位置触发的。例如,第2行(scheduler.getJobNames()),第3行(scheduler.getJobDetail()),第4行,第6行。当我注释掉每一行并进行检查时,调用的数量减少了。由于只有第一个for循环,而其中没有任何内容,因此作业类根本不会被调用。因此,看起来调用是从该代码本身触发的。您能在jobImpl.execute()中设置断点吗
并从调试器中粘贴stacktrace(甚至屏幕截图)?我想看看这个方法是如何触发的……嗨,Tomasz,这里是堆栈跟踪:java.lang.NullPointerException[junit],位于com.JobImpl.execute(JobImpl.java:24)[junit]位于org.quartz.core.JobRunShell.run(JobRunShell.java:216)[junit]位于org.quartz.siml.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549)您使用的是哪个版本的Quartz?您是否确定您的代码触发了作业?stacktrace看起来像一个普通的计划作业执行。您的问题中的哪一行代码触发了作业?您可以有选择地注释它们吗?我使用的是Quartz-1.0。作业是从代码中的多个位置触发的。例如,第2行(scheduler.getJobNames())、第3行(scheduler.getJobDetail())、第4行、第6行。当我注释掉每一行并检查时,调用的数量减少了。由于只有第一个for循环,而其中没有任何内容,所以作业类根本没有被调用。因此,看起来调用是从这段代码本身触发的。