如何在不重启服务器的情况下添加触发器来运行Quartz调度程序实例

时间:2014-05-07 00:56:17

标签: java quartz-scheduler netbeans6.8

我想创建一个调度程序实例,然后添加作业和触发器以供将来使用到由Web UI运行的此调度程序,而无需重新启动服务器 (我使用Quartz 2.x版本) 请有人帮帮我吗?

谢谢

2 个答案:

答案 0 :(得分:1)

您可以向Quartz调度程序实例动态添加作业,但作业(即作业类)通常必须存在于Quartz调度程序的类路径中。或者,您可以使用Quartz调度程序的JobFactory API通过自定义类加载器加载作业类,这将允许您真正动态地添加作业。

使用触发器,完全没有问题 - 可以使用标准的Quartz API动态添加/更新/删除它们。

对于允许您添加作业/触发器的GUI,有几个,您可以通过搜索" quartz scheduler gui"轻松找到它们。在Google上。

我恰好是QuartzDesk的主要开发者,这是其中一个产品。如果您对此产品有任何疑问,请使用我们的联系方式。

答案 1 :(得分:1)

谢谢你的回答,我改述了我的问题,

我想创建一个SCHEDULER实例并使用PARAMETRES添加五个JOBS。 然后,我想动态地将TRIGGERS添加到此作业,以供Web UI在将来使用而无需重新启动服务器。 对于每个触发器,我想将参数发送到JOB以执行特定处理

例:

public class SendSMS实现Job {

public void execute(JobExecutionContext jec) throws JobExecutionException {
    try {
        SendMessage(param1, param2, param3);
    } catch (Exception e) {
        throw new UnsupportedOperationException("Erreur : " + e.getStackTrace());
    }
}

}

公共类CronTriggers {

public static void main(String[] args) throws Exception {

    JobKey jobKeySMS = new JobKey("SMSJob", "Groupe1");
    JobDetail jobDetailSMS = JobBuilder.newJob(SendSMS.class).withIdentity(jobKeySMS).build();

    Scheduler scheduler = new StdSchedulerFactory().getScheduler();
    scheduler.clear();
    scheduler.start();

    scheduler.scheduleJob(jobDetailSMS, DYNAMIC_TRIGGER); // DYNAMIC_TRIGGER recover from web UI

由于