Как динамически добавить Quartz Job в JBoss6 - PullRequest
1 голос
/ 28 мая 2011

Я использую 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>

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Кажется, вы следуете учебнику по Quartz 2.0.x.Вы пробовали Quartz 1.x учебник ?

Версия, поставляемая с JBoss 6, - Quartz 1.8.3, и в Quartz 2.x .

произошли значительные изменения API .
1 голос
/ 22 июня 2011

В JBoss 6 вы можете попасть в планировщик Quartz, используя фабричный класс, предоставляемый в библиотеке Quartz. Это должно быть все, что вам нужно:

import org.quartz.Scheduler;
import org.quartz.impl.StdSchedulerFactory;
Scheduler scheduler = new StdSchedulerFactory().getScheduler();

Мы используем это в контексте прослушивателя при запуске, чтобы динамически планировать задания. НТН.

...