如何在java/struts2中列出正在运行的作业

如何在java/struts2中列出正在运行的作业,java,struts2,quartz-scheduler,Java,Struts2,Quartz Scheduler,我想列出Quartz在后台运行的所有作业。我正在使用下面的代码,但是我没有得到任何列表 public class RunningJobs { public void getJobList() throws SchedulerException { Scheduler schedule = new StdSchedulerFactory().getScheduler(); System.out.println(schedule.getJobGroupN

我想列出Quartz在后台运行的所有作业。我正在使用下面的代码,但是我没有得到任何列表

 public class RunningJobs {

    public void getJobList() throws SchedulerException {

        Scheduler schedule = new StdSchedulerFactory().getScheduler();
        System.out.println(schedule.getJobGroupNames().size()+" "+schedule.isShutdown());
        for (String groupName : schedule.getJobGroupNames()) {
            for (JobKey jobKey : schedule.getJobKeys(GroupMatcher
                    .jobGroupEquals(groupName))) {
                String jobName = jobKey.getName();
                String jobGroup = jobKey.getGroup();
                List<Trigger> triggers = (List<Trigger>) schedule
                        .getTriggersOfJob(jobKey);
                Date nextFireTime = triggers.get(0).getNextFireTime();
                System.out.println("[jobName] : " + jobName + " [groupName] : "
                        + jobGroup + " - " + nextFireTime);
            }

        }

    }
}
公共类运行作业{
public void getJobList()引发ScheduleException{
Scheduler schedule=new StdSchedulerFactory().getScheduler();
System.out.println(schedule.getJobGroupNames().size()+“”+schedule.isShutdown());
for(字符串groupName:schedule.getJobGroupNames()){
for(JobKey)JobKey:schedule.getjobkey(GroupMatcher
.jobGroupEquals(groupName))){
字符串jobName=jobKey.getName();
字符串jobGroup=jobKey.getGroup();
列表触发器=(列表)计划
.getTriggersOfJob(jobKey);
Date nextFireTime=triggers.get(0).getNextFireTime();
System.out.println(“[jobName]:”+jobName+“[groupName]:”)
+作业组+“-”+下一次上班时间);
}
}
}
}
尽管如此,使用web应用程序struts2继续运行的作业很少。

对的调用为您提供了一个新的调度程序,它不包含这些作业。您需要通过以下两种方式之一获得包含实际作业的调度程序的句柄

遍历所有调度程序:

  for(Scheduler schedule :StdSchedulerFactory().getAllSchedulers()){
            System.out.println(schedule.getJobGroupNames().size()+" "+schedule.isShutdown());
            for (String groupName : schedule.getJobGroupNames()) {
                for (JobKey jobKey : schedule.getJobKeys(GroupMatcher
                        .jobGroupEquals(groupName))) {
                    String jobName = jobKey.getName();
                    String jobGroup = jobKey.getGroup();
                    List<Trigger> triggers = (List<Trigger>) schedule
                            .getTriggersOfJob(jobKey);
                    Date nextFireTime = triggers.get(0).getNextFireTime();
                    System.out.println("[jobName] : " + jobName + " [groupName] : "
                            + jobGroup + " - " + nextFireTime);
                }

            }
    }

它是否打印出一个组名的大小?第一种方法没有帮助,而我对
schedulerName
两件事之一感到困惑。没有计划任何作业,或者您没有获得正确的计划程序实例。您提供的代码很有效:我遵循了以下步骤,在这里我已经浏览了您的代码,在那里我有一个查询。如果我们将
执行
函数放到另一个类中并独立调用,它会工作吗?我还没有测试过,但我相信它应该工作。
Scheduler schedule = new StdSchedulerFactory().getScheduler("schedulerName");