PotatoManager
PotatoManager

Reputation: 1775

Dynamically Adding jobs to a running Quartz scheduler from different executable

I have a started scheduler and have one job running on it. This is the main scheduler thread I shall be running.

    public class MyApp {
    Scheduler scheduler1;
    public static void main(String[] args) {
        run();
    }

    public static void run(){
      try { 
        JobDetail job = JobBuilder.newJob(Job.class)
                .withIdentity("JoeyJob", "group1").build(); 

        Trigger trigger1 = TriggerBuilder.newTrigger()
                .withIdentity("cronTrigger1", "group1") 
                .withSchedule(CronScheduleBuilder.cronSchedule("0/10 * * * * ?")) 
                .build(); 

        scheduler1 = new StdSchedulerFactory().getScheduler();



        scheduler1.start();
        System.out.println(scheduler1.getSchedulerInstanceId());
        scheduler1.scheduleJob(job,trigger1);

        Thread.sleep(1000000);

        scheduler1.shutdown();
    }
    catch(Exception e){
        e.printStackTrace();
    }
}

I wish to run another another job with a trigger on the very same scheduler but I need to access it from a different java executable using probably the scheduler name or any such parameter. I realize that the scheduler name returns something like 'defaultScheduler' and the Instance ID returns 'NON_CLUSTERED' I need to develop an application to run a single scheduler thread and constantly add/remove update jobs of sending emails. As this will be initialized used by a servlet. Is there a way I can access this scheduler from the memory from a different executable instance. This is what I am looking for.

    public class Test {

    public static void main(String[] args) throws SchedulerException {
        run();
     }
    public static void run()throws SchedulerException{
    JobDetail job = JobBuilder.newJob(Job2.class)
         .withIdentity("Jake", "group2").build(); 

    Trigger trigger1 = TriggerBuilder.newTrigger()
         .withIdentity("cronTrigger2", "group1")
         .withSchedule(CronScheduleBuilder.cronSchedule("0/2 * * * * ?")) 
         .build(); 


    Scheduler scheduler= new StdSchedulerFactory().getScheduler("scheduler-name-something");

    scheduler.scheduleJob(job,trigger1);
        }
   }

Is there a way to use the Scheduler Instance ID and the Scheduler Name to do this?

Upvotes: 1

Views: 1000

Answers (1)

PotatoManager
PotatoManager

Reputation: 1775

I checked the documentation, there is no way to do what I was looking for.

Upvotes: 0

Related Questions