Я использую JBoss6 и хочу динамически создавать Quartz-Jobs. Во время обработки задания будет определено следующее время начала (например, через 1, 5 или 10 часов).
Я не нашел для этого никаких решений, даже получить доступ к org.quartz.Scheduler
(см. инъекция QuartzScheduler в JBoss AS 6).
Следующая проблема заключается в создании новых рабочих заданий, я следовал учебнику http://www.quartz-scheduler.org/docs/tutorial/TutorialLesson02.html:
import static org.quartz.JobBuilder.*;
import static org.quartz.SimpleScheduleBuilder.*;
import static org.quartz.CronScheduleBuilder.*;
import static org.quartz.CalendarIntervalScheduleBuilder.*;
import static org.quartz.TriggerBuilder.*;
import static org.quartz.DateBuilder.*;
// define the job and tie it to our HelloJob class
JobDetail job = newJob(HelloJob.class)
.withIdentity("myJob", "group1") // name "myJob", group "group1"
.build();
// Trigger the job to run now, and then every 40 seconds
Trigger trigger = newTrigger()
.withIdentity("myTrigger", "group1")
.startNow()
.withSchedule(simpleSchedule()
.withIntervalInSeconds(40)
.repeatForever())
.build();
// Tell quartz to schedule the job using our trigger
sched.scheduleJob(job, trigger);
Но похоже, что org.quartz.JobBuilder
недоступен для JBoss6. Если у меня вручную добавить зависимость от кварца, у вас есть ошибки при запуске (проблемы с загрузкой классов). Эти артефакты определены (без явного использования кварца):
<dependency>
<groupId>org.jboss.jbossas</groupId>
<artifactId>jboss-as-client</artifactId>
<version>6.0.0.Final</version>
<type>pom</type>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.jboss.security</groupId>
<artifactId>jbosssx-client</artifactId>
</exclusion>
<exclusion>
<groupId>org.jboss.security</groupId>
<artifactId>jbosssx</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.jboss.spec</groupId>
<artifactId>jboss-javaee-6.0</artifactId>
<version>1.0.0.Final</version>
<type>pom</type>
<scope>provided</scope>
</dependency>
Кажется, вы следуете руководству Quartz 2.0.x. Вы пробовали Quartz 1.x tutorial?
Версия, представленная JBoss 6, - Quartz 1.8.3, и есть значительные изменения API Quartz 2.x.
В JBoss 6 вы можете попасть в планировщик кварца, используя класс factory, предоставленный в библиотеке кварца. Это должно быть все, что вам нужно:
import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
Мы используем его в контекстном прослушивателе при запуске для динамического планирования заданий. НТН.
@ResourceAdapter("quartz-ra.rar")
). Моя проблема в том, что я не знаю, как создавать новые рабочие места, потому чтоorg.quartz.JobBuilder
недоступен.