Fix broken tests in QuartzSupportTests
This commit ensures that QuartzSupportTests and its related configuration are compatible with Quartz 2.1.7. - Test jobs are now durable where required. - Deleted legacy tests that attempted to use a Runnable instead of a Job as a jobClass for a JobDetail. - Replaced quartz-hsql.sql with current version for Quartz 2.1.7. Issue: SPR-11630
This commit is contained in:
parent
5d049e0de8
commit
906321dcdd
|
@ -18,9 +18,11 @@ package org.springframework.scheduling.quartz;
|
|||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.junit.Test;
|
||||
|
||||
import org.quartz.Job;
|
||||
import org.quartz.JobExecutionContext;
|
||||
import org.quartz.JobExecutionException;
|
||||
|
@ -56,7 +58,7 @@ import static org.mockito.BDDMockito.*;
|
|||
public class QuartzSupportTests {
|
||||
|
||||
@Test
|
||||
public void testSchedulerFactoryBeanWithApplicationContext() throws Exception {
|
||||
public void schedulerFactoryBeanWithApplicationContext() throws Exception {
|
||||
TestBean tb = new TestBean("tb", 99);
|
||||
StaticApplicationContext ac = new StaticApplicationContext();
|
||||
|
||||
|
@ -92,13 +94,14 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithTaskExecutor() throws Exception {
|
||||
public void schedulerWithTaskExecutor() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
CountingTaskExecutor taskExecutor = new CountingTaskExecutor();
|
||||
DummyJob.count = 0;
|
||||
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setDurability(true);
|
||||
jobDetail.setJobClass(DummyJob.class);
|
||||
jobDetail.setName("myJob");
|
||||
|
||||
|
@ -124,44 +127,22 @@ public class QuartzSupportTests {
|
|||
bean.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithRunnable() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyRunnable.count = 0;
|
||||
|
||||
@Test(expected = IllegalArgumentException.class)
|
||||
@SuppressWarnings({ "unchecked", "rawtypes" })
|
||||
public void jobDetailWithRunnableInsteadOfJob() {
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setJobClass((Class) DummyRunnable.class);
|
||||
jobDetail.setName("myJob");
|
||||
|
||||
SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
|
||||
trigger.setName("myTrigger");
|
||||
trigger.setJobDetail(jobDetail);
|
||||
trigger.setStartDelay(1);
|
||||
trigger.setRepeatInterval(500);
|
||||
trigger.setRepeatCount(1);
|
||||
trigger.afterPropertiesSet();
|
||||
|
||||
SchedulerFactoryBean bean = new SchedulerFactoryBean();
|
||||
bean.setTriggers(trigger.getObject());
|
||||
bean.setJobDetails(jobDetail);
|
||||
bean.afterPropertiesSet();
|
||||
bean.start();
|
||||
|
||||
Thread.sleep(500);
|
||||
assertTrue(DummyRunnable.count > 0);
|
||||
|
||||
bean.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithQuartzJobBean() throws Exception {
|
||||
public void schedulerWithQuartzJobBean() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setDurability(true);
|
||||
jobDetail.setJobClass(DummyJobBean.class);
|
||||
jobDetail.setName("myJob");
|
||||
jobDetail.getJobDataMap().put("param", "10");
|
||||
|
@ -188,13 +169,14 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactory() throws Exception {
|
||||
public void schedulerWithSpringBeanJobFactory() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setDurability(true);
|
||||
jobDetail.setJobClass(DummyJob.class);
|
||||
jobDetail.setName("myJob");
|
||||
jobDetail.getJobDataMap().put("param", "10");
|
||||
|
@ -223,13 +205,14 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndParamMismatchNotIgnored() throws Exception {
|
||||
public void schedulerWithSpringBeanJobFactoryAndParamMismatchNotIgnored() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setDurability(true);
|
||||
jobDetail.setJobClass(DummyJob.class);
|
||||
jobDetail.setName("myJob");
|
||||
jobDetail.getJobDataMap().put("para", "10");
|
||||
|
@ -259,46 +242,13 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndRunnable() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyRunnable.param = 0;
|
||||
DummyRunnable.count = 0;
|
||||
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setJobClass((Class) DummyRunnable.class);
|
||||
jobDetail.setName("myJob");
|
||||
jobDetail.getJobDataMap().put("param", "10");
|
||||
|
||||
SimpleTriggerFactoryBean trigger = new SimpleTriggerFactoryBean();
|
||||
trigger.setName("myTrigger");
|
||||
trigger.setJobDetail(jobDetail);
|
||||
trigger.setStartDelay(1);
|
||||
trigger.setRepeatInterval(500);
|
||||
trigger.setRepeatCount(1);
|
||||
trigger.afterPropertiesSet();
|
||||
|
||||
SchedulerFactoryBean bean = new SchedulerFactoryBean();
|
||||
bean.setJobFactory(new SpringBeanJobFactory());
|
||||
bean.setTriggers(trigger.getObject());
|
||||
bean.setJobDetails(jobDetail);
|
||||
bean.afterPropertiesSet();
|
||||
bean.start();
|
||||
|
||||
Thread.sleep(500);
|
||||
assertEquals(10, DummyRunnable.param);
|
||||
assertTrue(DummyRunnable.count > 0);
|
||||
|
||||
bean.destroy();
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndQuartzJobBean() throws Exception {
|
||||
public void schedulerWithSpringBeanJobFactoryAndQuartzJobBean() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
DummyJobBean.param = 0;
|
||||
DummyJobBean.count = 0;
|
||||
|
||||
JobDetailImpl jobDetail = new JobDetailImpl();
|
||||
jobDetail.setDurability(true);
|
||||
jobDetail.setJobClass(DummyJobBean.class);
|
||||
jobDetail.setName("myJob");
|
||||
jobDetail.getJobDataMap().put("param", "10");
|
||||
|
@ -326,7 +276,7 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerWithSpringBeanJobFactoryAndJobSchedulingData() throws Exception {
|
||||
public void schedulerWithSpringBeanJobFactoryAndJobSchedulingData() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
@ -348,9 +298,8 @@ public class QuartzSupportTests {
|
|||
* Tests the creation of multiple schedulers (SPR-772)
|
||||
*/
|
||||
@Test
|
||||
public void testMultipleSchedulers() throws Exception {
|
||||
ClassPathXmlApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/multipleSchedulers.xml");
|
||||
public void multipleSchedulers() throws Exception {
|
||||
ClassPathXmlApplicationContext ctx = context("multipleSchedulers.xml");
|
||||
try {
|
||||
Scheduler scheduler1 = (Scheduler) ctx.getBean("scheduler1");
|
||||
Scheduler scheduler2 = (Scheduler) ctx.getBean("scheduler2");
|
||||
|
@ -364,10 +313,9 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testWithTwoAnonymousMethodInvokingJobDetailFactoryBeans() throws InterruptedException {
|
||||
public void twoAnonymousMethodInvokingJobDetailFactoryBeans() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
ClassPathXmlApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/multipleAnonymousMethodInvokingJobDetailFB.xml");
|
||||
ClassPathXmlApplicationContext ctx = context("multipleAnonymousMethodInvokingJobDetailFB.xml");
|
||||
Thread.sleep(3000);
|
||||
try {
|
||||
QuartzTestBean exportService = (QuartzTestBean) ctx.getBean("exportService");
|
||||
|
@ -384,10 +332,9 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerAccessorBean() throws InterruptedException {
|
||||
public void schedulerAccessorBean() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
ClassPathXmlApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/schedulerAccessorBean.xml");
|
||||
ClassPathXmlApplicationContext ctx = context("schedulerAccessorBean.xml");
|
||||
Thread.sleep(3000);
|
||||
try {
|
||||
QuartzTestBean exportService = (QuartzTestBean) ctx.getBean("exportService");
|
||||
|
@ -405,7 +352,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
@SuppressWarnings("resource")
|
||||
public void testSchedulerAutoStartsOnContextRefreshedEventByDefault() throws Exception {
|
||||
public void schedulerAutoStartsOnContextRefreshedEventByDefault() throws Exception {
|
||||
StaticApplicationContext context = new StaticApplicationContext();
|
||||
context.registerBeanDefinition("scheduler", new RootBeanDefinition(SchedulerFactoryBean.class));
|
||||
Scheduler bean = context.getBean("scheduler", Scheduler.class);
|
||||
|
@ -416,7 +363,7 @@ public class QuartzSupportTests {
|
|||
|
||||
@Test
|
||||
@SuppressWarnings("resource")
|
||||
public void testSchedulerAutoStartupFalse() throws Exception {
|
||||
public void schedulerAutoStartupFalse() throws Exception {
|
||||
StaticApplicationContext context = new StaticApplicationContext();
|
||||
BeanDefinition beanDefinition = BeanDefinitionBuilder.genericBeanDefinition(
|
||||
SchedulerFactoryBean.class).addPropertyValue("autoStartup", false).getBeanDefinition();
|
||||
|
@ -428,28 +375,27 @@ public class QuartzSupportTests {
|
|||
}
|
||||
|
||||
@Test
|
||||
public void testSchedulerRepositoryExposure() throws InterruptedException {
|
||||
ClassPathXmlApplicationContext ctx =
|
||||
new ClassPathXmlApplicationContext("/org/springframework/scheduling/quartz/schedulerRepositoryExposure.xml");
|
||||
public void schedulerRepositoryExposure() throws Exception {
|
||||
ClassPathXmlApplicationContext ctx = context("schedulerRepositoryExposure.xml");
|
||||
assertSame(SchedulerRepository.getInstance().lookup("myScheduler"), ctx.getBean("scheduler"));
|
||||
ctx.close();
|
||||
}
|
||||
|
||||
// SPR-6038: detect HSQL and stop illegal locks being taken
|
||||
/**
|
||||
* SPR-6038: detect HSQL and stop illegal locks being taken.
|
||||
*/
|
||||
@Test
|
||||
public void testSchedulerWithHsqlDataSource() throws Exception {
|
||||
public void schedulerWithHsqlDataSource() throws Exception {
|
||||
Assume.group(TestGroup.PERFORMANCE);
|
||||
|
||||
DummyJob.param = 0;
|
||||
DummyJob.count = 0;
|
||||
|
||||
ClassPathXmlApplicationContext ctx = new ClassPathXmlApplicationContext(
|
||||
"/org/springframework/scheduling/quartz/databasePersistence.xml");
|
||||
ClassPathXmlApplicationContext ctx = context("databasePersistence.xml");
|
||||
JdbcTemplate jdbcTemplate = new JdbcTemplate(ctx.getBean(DataSource.class));
|
||||
assertTrue("No triggers were persisted", jdbcTemplate.queryForList("SELECT * FROM qrtz_triggers").size()>0);
|
||||
Thread.sleep(3000);
|
||||
try {
|
||||
// assertEquals(10, DummyJob.param);
|
||||
assertTrue(DummyJob.count > 0);
|
||||
}
|
||||
finally {
|
||||
|
@ -457,6 +403,10 @@ public class QuartzSupportTests {
|
|||
}
|
||||
}
|
||||
|
||||
private ClassPathXmlApplicationContext context(String path) {
|
||||
return new ClassPathXmlApplicationContext(path, getClass());
|
||||
}
|
||||
|
||||
|
||||
public static class CountingTaskExecutor implements TaskExecutor {
|
||||
|
||||
|
@ -512,20 +462,9 @@ public class QuartzSupportTests {
|
|||
|
||||
public static class DummyRunnable implements Runnable {
|
||||
|
||||
private static int param;
|
||||
|
||||
private static int count;
|
||||
|
||||
public void setParam(int value) {
|
||||
if (param > 0) {
|
||||
throw new IllegalStateException("Param already set");
|
||||
}
|
||||
param = value;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
count++;
|
||||
/* no-op */
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,13 +1,12 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.0.xsd
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd
|
||||
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
|
||||
|
||||
<bean id="scheduler"
|
||||
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
|
||||
<bean id="scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
|
||||
<property name="triggers" ref="trigger" />
|
||||
<property name="dataSource" ref="dataSource"/>
|
||||
<property name="dataSource" ref="dataSource" />
|
||||
</bean>
|
||||
|
||||
<bean id="trigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
|
||||
|
@ -20,8 +19,8 @@
|
|||
<entry key="param" value="10" />
|
||||
</map>
|
||||
</property>
|
||||
<property name="jobClass"
|
||||
value="org.springframework.scheduling.quartz.QuartzSupportTests$DummyJob" />
|
||||
<property name="jobClass" value="org.springframework.scheduling.quartz.QuartzSupportTests$DummyJob" />
|
||||
<property name="durability" value="true" />
|
||||
</bean>
|
||||
</property>
|
||||
</bean>
|
||||
|
|
|
@ -1,47 +1,46 @@
|
|||
--
|
||||
-- In your Quartz properties file, you'll need to set
|
||||
-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.HSQLDBDelegate
|
||||
--
|
||||
-- Column lenghts are only suggestions. For names, groups, use at least 40 chars.
|
||||
-- for blobs (VARBINARY) use a size that is sure to meet the needs of the amount of data
|
||||
-- you place in job data maps, etc..
|
||||
--
|
||||
|
||||
DROP TABLE qrtz_locks IF EXISTS;
|
||||
DROP TABLE qrtz_scheduler_state IF EXISTS;
|
||||
DROP TABLE qrtz_fired_triggers IF EXISTS;
|
||||
DROP TABLE qrtz_paused_trigger_grps IF EXISTS;
|
||||
DROP TABLE qrtz_calendars IF EXISTS;
|
||||
DROP TABLE qrtz_trigger_listeners IF EXISTS;
|
||||
DROP TABLE qrtz_blob_triggers IF EXISTS;
|
||||
DROP TABLE qrtz_cron_triggers IF EXISTS;
|
||||
DROP TABLE qrtz_simple_triggers IF EXISTS;
|
||||
DROP TABLE qrtz_simprop_triggers IF EXISTS;
|
||||
DROP TABLE qrtz_triggers IF EXISTS;
|
||||
DROP TABLE qrtz_job_listeners IF EXISTS;
|
||||
DROP TABLE qrtz_job_details IF EXISTS;
|
||||
|
||||
CREATE TABLE qrtz_job_details
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
JOB_NAME VARCHAR(200) NOT NULL,
|
||||
JOB_GROUP VARCHAR(200) NOT NULL,
|
||||
DESCRIPTION VARCHAR(250) NULL,
|
||||
JOB_CLASS_NAME VARCHAR(250) NOT NULL,
|
||||
IS_DURABLE BOOLEAN NOT NULL,
|
||||
IS_VOLATILE BOOLEAN NOT NULL,
|
||||
IS_STATEFUL BOOLEAN NOT NULL,
|
||||
IS_NONCONCURRENT BOOLEAN NOT NULL,
|
||||
IS_UPDATE_DATA BOOLEAN NOT NULL,
|
||||
REQUESTS_RECOVERY BOOLEAN NOT NULL,
|
||||
JOB_DATA BLOB NULL,
|
||||
PRIMARY KEY (JOB_NAME,JOB_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_job_listeners
|
||||
(
|
||||
JOB_NAME VARCHAR(200) NOT NULL,
|
||||
JOB_GROUP VARCHAR(200) NOT NULL,
|
||||
JOB_LISTENER VARCHAR(200) NOT NULL,
|
||||
PRIMARY KEY (JOB_NAME,JOB_GROUP,JOB_LISTENER),
|
||||
FOREIGN KEY (JOB_NAME,JOB_GROUP)
|
||||
REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP)
|
||||
JOB_DATA VARBINARY(16000) NULL,
|
||||
PRIMARY KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
JOB_NAME VARCHAR(200) NOT NULL,
|
||||
JOB_GROUP VARCHAR(200) NOT NULL,
|
||||
IS_VOLATILE BOOLEAN NOT NULL,
|
||||
DESCRIPTION VARCHAR(250) NULL,
|
||||
NEXT_FIRE_TIME NUMERIC(13) NULL,
|
||||
PREV_FIRE_TIME NUMERIC(13) NULL,
|
||||
|
@ -52,101 +51,114 @@ START_TIME NUMERIC(13) NOT NULL,
|
|||
END_TIME NUMERIC(13) NULL,
|
||||
CALENDAR_NAME VARCHAR(200) NULL,
|
||||
MISFIRE_INSTR NUMERIC(2) NULL,
|
||||
JOB_DATA BLOB NULL,
|
||||
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (JOB_NAME,JOB_GROUP)
|
||||
REFERENCES QRTZ_JOB_DETAILS(JOB_NAME,JOB_GROUP)
|
||||
JOB_DATA VARBINARY(16000) NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
REFERENCES QRTZ_JOB_DETAILS(SCHED_NAME,JOB_NAME,JOB_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_simple_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
REPEAT_COUNT NUMERIC(7) NOT NULL,
|
||||
REPEAT_INTERVAL NUMERIC(12) NOT NULL,
|
||||
TIMES_TRIGGERED NUMERIC(7) NOT NULL,
|
||||
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)
|
||||
TIMES_TRIGGERED NUMERIC(10) NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_cron_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
CRON_EXPRESSION VARCHAR(120) NOT NULL,
|
||||
TIME_ZONE_ID VARCHAR(80),
|
||||
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_simprop_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
STR_PROP_1 VARCHAR(512) NULL,
|
||||
STR_PROP_2 VARCHAR(512) NULL,
|
||||
STR_PROP_3 VARCHAR(512) NULL,
|
||||
INT_PROP_1 NUMERIC(9) NULL,
|
||||
INT_PROP_2 NUMERIC(9) NULL,
|
||||
LONG_PROP_1 NUMERIC(13) NULL,
|
||||
LONG_PROP_2 NUMERIC(13) NULL,
|
||||
DEC_PROP_1 NUMERIC(13,4) NULL,
|
||||
DEC_PROP_2 NUMERIC(13,4) NULL,
|
||||
BOOL_PROP_1 BOOLEAN NULL,
|
||||
BOOL_PROP_2 BOOLEAN NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_blob_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
BLOB_DATA BLOB NULL,
|
||||
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_trigger_listeners
|
||||
(
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
TRIGGER_LISTENER VARCHAR(200) NOT NULL,
|
||||
PRIMARY KEY (TRIGGER_NAME,TRIGGER_GROUP,TRIGGER_LISTENER),
|
||||
FOREIGN KEY (TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(TRIGGER_NAME,TRIGGER_GROUP)
|
||||
BLOB_DATA VARBINARY(16000) NULL,
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP),
|
||||
FOREIGN KEY (SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
REFERENCES QRTZ_TRIGGERS(SCHED_NAME,TRIGGER_NAME,TRIGGER_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_calendars
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
CALENDAR_NAME VARCHAR(200) NOT NULL,
|
||||
CALENDAR BLOB NOT NULL,
|
||||
PRIMARY KEY (CALENDAR_NAME)
|
||||
CALENDAR VARBINARY(16000) NOT NULL,
|
||||
PRIMARY KEY (SCHED_NAME,CALENDAR_NAME)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_paused_trigger_grps
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
PRIMARY KEY (TRIGGER_GROUP)
|
||||
PRIMARY KEY (SCHED_NAME,TRIGGER_GROUP)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_fired_triggers
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
ENTRY_ID VARCHAR(95) NOT NULL,
|
||||
TRIGGER_NAME VARCHAR(200) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR(200) NOT NULL,
|
||||
IS_VOLATILE BOOLEAN NOT NULL,
|
||||
INSTANCE_NAME VARCHAR(200) NOT NULL,
|
||||
FIRED_TIME NUMERIC(13) NOT NULL,
|
||||
PRIORITY INTEGER NOT NULL,
|
||||
STATE VARCHAR(16) NOT NULL,
|
||||
JOB_NAME VARCHAR(200) NULL,
|
||||
JOB_GROUP VARCHAR(200) NULL,
|
||||
IS_STATEFUL BOOLEAN NULL,
|
||||
IS_NONCONCURRENT BOOLEAN NULL,
|
||||
REQUESTS_RECOVERY BOOLEAN NULL,
|
||||
PRIMARY KEY (ENTRY_ID)
|
||||
PRIMARY KEY (SCHED_NAME,ENTRY_ID)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_scheduler_state
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
INSTANCE_NAME VARCHAR(200) NOT NULL,
|
||||
LAST_CHECKIN_TIME NUMERIC(13) NOT NULL,
|
||||
CHECKIN_INTERVAL NUMERIC(13) NOT NULL,
|
||||
PRIMARY KEY (INSTANCE_NAME)
|
||||
PRIMARY KEY (SCHED_NAME,INSTANCE_NAME)
|
||||
);
|
||||
|
||||
CREATE TABLE qrtz_locks
|
||||
(
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
LOCK_NAME VARCHAR(40) NOT NULL,
|
||||
PRIMARY KEY (LOCK_NAME)
|
||||
PRIMARY KEY (SCHED_NAME,LOCK_NAME)
|
||||
);
|
||||
|
||||
INSERT INTO qrtz_locks values('TRIGGER_ACCESS');
|
||||
INSERT INTO qrtz_locks values('JOB_ACCESS');
|
||||
INSERT INTO qrtz_locks values('CALENDAR_ACCESS');
|
||||
INSERT INTO qrtz_locks values('STATE_ACCESS');
|
||||
INSERT INTO qrtz_locks values('MISFIRE_ACCESS');
|
||||
|
|
Loading…
Reference in New Issue