我正在使用JBoss6並想動態創建Quartz-Jobs。在處理作業期間,將定義下一個開始時間(例如,在1,5或10個小時內)。如何在JBoss6中動態添加Quartz Job
我沒有找到任何解決方案,甚至很難獲得org.quartz.Scheduler
(請參閱QuartzScheduler injection in 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。如果我手動添加石英依賴項在啓動時出現錯誤(類加載問題)。該文物的定義(沒有明確使用Quartz):
<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>
另請注意,JBoss 6將在引導服務器實例時初始化Quartz調度程序;但是,它會使調度程序處於待機模式。因此,調度程序必須在觸發任何計劃的觸發器之前明確啓動。 – BigRedHurt 2011-06-23 16:12:05
感謝您的反饋。 Quartz是在我的環境中自動啓動的(我假設有一個'@ResourceAdapter(「quartz-ra.rar」)'defined)。我的問題是,我不知道如何創建新的作業,因爲'org.quartz.JobBuilder'不可用。 – Thor 2011-07-20 08:12:13