Java 如何删除或重新安排作业?

Java 如何删除或重新安排作业?,java,servlets,scheduled-tasks,quartz-scheduler,Java,Servlets,Scheduled Tasks,Quartz Scheduler,请看下面的代码 /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package RemindeWorker.Listener; import java.util.Date;

请看下面的代码

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package RemindeWorker.Listener;


import java.util.Date;
import java.util.logging.Level;
import java.util.logging.Logger;
import static org.quartz.CronScheduleBuilder.dailyAtHourAndMinute;
import static org.quartz.JobBuilder.newJob;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import static org.quartz.TriggerBuilder.newTrigger;
import static org.quartz.TriggerKey.triggerKey;
import org.quartz.impl.StdSchedulerFactory;

/**
 *
 * @author Yohan
 */
public class ReminderExecuter extends ReminderCommon
{
    private static ReminderExecuter r;

    private ReminderExecuter()
    {
        super();
    }

    public static ReminderExecuter  getReminderExecuter()
    {
        if(r==null)
        {
            r = new ReminderExecuter();
        }

        return r;
    }

    public void executeRemnders()
    {
        passportReminder1();
       // passportReminder2();
    }

    private void passportReminder1()
    {
        String[] reminderTime = getFirstReminderTime().trim().split(":");
        String reminderHour = reminderTime[0];
        String reminderMinute = reminderTime[1];

        String[]reminderTime2 = getSecondReminderTime().trim().split(":");
        String reminderHour2 = reminderTime2[0];
        String reminderMinute2 = reminderTime2[1];

        System.out.println("Reminder Hour: "+reminderHour);
        System.out.println("Reminder Minute: "+reminderMinute);

        JobDetail job = newJob(PassportJob.class).withIdentity("passportJob1")
                .usingJobData("userName", getUserName())
                .usingJobData("password",getPassword())
                .usingJobData("host",getHost())

                .build();

         Trigger trigger = newTrigger()
                 .withIdentity(triggerKey("passportTrigger1", "passportTriggerGroup1"))
                 .withSchedule(dailyAtHourAndMinute(Integer.parseInt(reminderHour), Integer.parseInt(reminderMinute)))
                 .startAt(new Date()).build();

         Trigger trigger2 = newTrigger()
                 .withIdentity(triggerKey("passportTrigger2", "passportTriggerGroup2"))
                 .withSchedule(dailyAtHourAndMinute(Integer.parseInt(reminderHour2), Integer.parseInt(reminderMinute2)))
                 .startAt(new Date()).build();

        try {
            Scheduler scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.start();
            scheduler.scheduleJob(job, trigger);
            System.out.println("Job 1 Scheduled");

            Scheduler scheduler2 = new StdSchedulerFactory().getScheduler();
            scheduler2.start();
            scheduler2.scheduleJob(job, trigger2);
            System.out.println("Job 2 Scheduled");

        } catch (SchedulerException ex) {
            ex.printStackTrace();
        }
    }



    private void deleteJob()
    {
        try {
            Scheduler scheduler = new StdSchedulerFactory().getScheduler();
            scheduler.deleteJob(null);

        } catch (SchedulerException ex) {
            System.out.println(ex);
        }
    }
}
在这里,我创建了
deleteJob()
方法来删除并重新打开或重新安排
passportrementer1()
中列出的作业。但是我不知道该怎么做。我可以删除或重新安排quartz作业吗?我使用的是quartz 2 API。

我们可以通过两种方式完成:

  • 手动终止作业并重新启动
  • 使用以下代码:
  • deleteJob(新的JobKey(jobData.getJobName())

    有关更多详细信息,请参阅

    您试图做的是删除一个无用的新作业

    您可以像下面这样编辑deleteJob(),并在需要时调用它:

       private void deleteJob(Scheduler scheduler, String jobName)
        {
            try {
    
                scheduler.deleteJob(new JobKey(jobName));
    
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    
    我们可以通过两种方式:

  • 手动终止作业并重新启动
  • 使用以下代码:
  • deleteJob(新的JobKey(jobData.getJobName())

    有关更多详细信息,请参阅

    您试图做的是删除一个无用的新作业

    您可以像下面这样编辑deleteJob(),并在需要时调用它:

       private void deleteJob(Scheduler scheduler, String jobName)
        {
            try {
    
                scheduler.deleteJob(new JobKey(jobName));
    
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    
    我们可以通过两种方式:

  • 手动终止作业并重新启动
  • 使用以下代码:
  • deleteJob(新的JobKey(jobData.getJobName())

    有关更多详细信息,请参阅

    您试图做的是删除一个无用的新作业

    您可以像下面这样编辑deleteJob(),并在需要时调用它:

       private void deleteJob(Scheduler scheduler, String jobName)
        {
            try {
    
                scheduler.deleteJob(new JobKey(jobName));
    
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    
    我们可以通过两种方式:

  • 手动终止作业并重新启动
  • 使用以下代码:
  • deleteJob(新的JobKey(jobData.getJobName())

    有关更多详细信息,请参阅

    您试图做的是删除一个无用的新作业

    您可以像下面这样编辑deleteJob(),并在需要时调用它:

       private void deleteJob(Scheduler scheduler, String jobName)
        {
            try {
    
                scheduler.deleteJob(new JobKey(jobName));
    
            } catch (Exception ex) {
                System.out.println(ex);
            }
        }
    

    您的代码不完整,我无法正确理解。谢谢。这里的工作名称是什么<代码>护照作业1?是。但有一个问题。也就是说,在您的链接示例中,此人首先列出所有作业。在这里,我不能通过日程安排,因为它将简单地删除“刚才”安排的作业。这就是你想要的。我认为从你的帖子中,只需删除并重新安排作业,对吗?如果你不能发送调度程序,那么你必须列出并获取,然后按照示例中的方式发送。你的代码不完整,我无法正确理解。谢谢。这里的工作名称是什么<代码>护照作业1?是。但有一个问题。也就是说,在您的链接示例中,此人首先列出所有作业。在这里,我不能通过日程安排,因为它将简单地删除“刚才”安排的作业。这就是你想要的。我认为从你的帖子中,只需删除并重新安排作业,对吗?如果你不能发送调度程序,那么你必须列出并获取,然后按照示例中的方式发送。你的代码不完整,我无法正确理解。谢谢。这里的工作名称是什么<代码>护照作业1?是。但有一个问题。也就是说,在您的链接示例中,此人首先列出所有作业。在这里,我不能通过日程安排,因为它将简单地删除“刚才”安排的作业。这就是你想要的。我认为从你的帖子中,只需删除并重新安排作业,对吗?如果你不能发送调度程序,那么你必须列出并获取,然后按照示例中的方式发送。你的代码不完整,我无法正确理解。谢谢。这里的工作名称是什么<代码>护照作业1?是。但有一个问题。也就是说,在您的链接示例中,此人首先列出所有作业。在这里,我不能通过日程安排,因为它将简单地删除“刚才”安排的作业。这就是你想要的。我认为从你的帖子中,只需删除并重新安排作业,对吗?如果您不能发送调度程序,那么您必须列出并获取调度程序,然后按照示例中的方式发送调度程序