如何在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更改 。