Могу ли я определить экземпляр задания, используя метод вместо класса Quartz? - PullRequest
0 голосов
/ 22 апреля 2019

Я читаю документацию по Quartz и пытаюсь понять, можно ли передать метод экземпляра Job вместо класса.

Например, в случае с классом мне нужно написать:

public class MyJobClass implements Job {

    public MyJobClass() {
        // Instances of Job must have a public no-argument constructor.
    }

    public void execute(JobExecutionContext context)
            throws JobExecutionException {

        JobDataMap data = context.getMergedJobDataMap();
        System.out.println("someProp = " + data.getString("someProp"));
    }    
}

И определение экземпляра задания, например:

JobDetail job1 = newJob(MyJobClass.class) // what about method here
    .withIdentity("job1", "group1")
    .usingJobData("someProp", "someValue")
    .build();

По тому же принципу я попытался определить метод передачи экземпляра задания, например:

// define the job
JobDetail job = newJob(testMethod())
               .withIdentity("job1", "group1")
               .build();

И метод выглядиткак:

private Class<? extends Job> testMethod() {
    //...  
    return null;
}

Но я получаю ошибку:

java.lang.IllegalArgumentException: Job class cannot be null.

Обновлено: Я возвращаю null в методе, потому что, если я этого не сделаюЯ получаю: enter image description here

1 Ответ

1 голос
/ 22 апреля 2019

Ваш метод testMethod() возвращает null. Кварц не принимает ноль и дает сбой.

Кварц хочет самостоятельно управлять заданиями, поэтому вам разрешено передавать только class, а не instance.

Зачем вам нужен собственный экземпляр? Если вы хотите сделать «постоянным» сохранение состояния между выполнениями, тогда Quartz предлагает концепцию stateful job, см. http://www.quartz -scheduler.org / api / 2.3.0 / org / quartz / StatefulJob.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...