如何在JBoss6中动态添加Quartz作业

我正在使用JBoss6并希望动态创建Quartz-Jobs。 在处理作业期间,将定义下一个开始时间(例如,在1,5或10小时内)。

我没有找到任何解决方案,甚至很难访问org.quartz.Scheduler (参见JBoss AS 6中的QuartzScheduler注入 )。

下一个问题是创建新的工作,我按照教程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。 如果我在启动时手动添加quartz-dependency有错误(类加载问题)。 定义了这些工件(没有明确使用Quartz):

  org.jboss.jbossas jboss-as-client 6.0.0.Final pom test   org.jboss.security jbosssx-client   org.jboss.security jbosssx     org.jboss.spec jboss-javaee-6.0 1.0.0.Final pom provided  

在JBoss 6中,您可以使用Quartz库中提供的工厂类来访问Quartz调度程序。 这应该是你所需要的:

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

我们在启动时在上下文侦听器中使用它来动态调度作业。 HTH。

看来你正在关注Quartz 2.0.x教程。 你有没有尝试过Quartz 1.x教程 ?

JBoss 6提供的版本是Quartz 1.8.3, Quartz 2.x中有重大的API更改 。