Improvement #5 升级Quartz 2.x
This commit is contained in:
@@ -480,6 +480,9 @@
|
||||
<sql driver="${jdbc.driver}" url="${jdbc.url}" userid="${jdbc.username}" password="${jdbc.password}" src="src/main/resources/sql/${sql.type}/schema.sql" onerror="continue">
|
||||
<classpath refid="maven.test.classpath" />
|
||||
</sql>
|
||||
<sql driver="${quartz.jdbc.driver}" url="${quartz.jdbc.url}" userid="${quartz.jdbc.username}" password="${quartz.jdbc.password}" src="src/main/resources/sql/${sql.type}/quartz.sql" onerror="continue">
|
||||
<classpath refid="maven.test.classpath" />
|
||||
</sql>
|
||||
|
||||
<dbunit driver="${jdbc.driver}" url="${jdbc.url}" userid="${jdbc.username}" password="${jdbc.password}">
|
||||
<dbconfig>
|
||||
|
||||
+3
-3
@@ -7,19 +7,19 @@ import java.util.concurrent.TimeUnit;
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.PreDestroy;
|
||||
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.scheduling.support.DelegatingErrorHandlingRunnable;
|
||||
import org.springframework.scheduling.support.TaskUtils;
|
||||
import org.springside.examples.showcase.common.service.AccountManager;
|
||||
import org.apache.commons.lang3.Validate;
|
||||
import org.springside.modules.utils.Threads;
|
||||
|
||||
import com.google.common.util.concurrent.ThreadFactoryBuilder;
|
||||
|
||||
/**
|
||||
* 被ScheduledThreadPoolExecutor定时执行的任务类.
|
||||
* 被ScheduledThreadPoolExecutor定时执行的任务类, 并强化了退出控制.
|
||||
*/
|
||||
public class JdkExecutorJob implements Runnable {
|
||||
|
||||
@@ -61,7 +61,7 @@ public class JdkExecutorJob implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
long userCount = accountManager.getUserCount();
|
||||
logger.info("There are {} user in database.", userCount);
|
||||
logger.info("There are {} user in database, printed by jdk timer job.", userCount);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+1
-2
@@ -32,7 +32,6 @@ public class QuartzClusterableJob extends QuartzJobBean {
|
||||
/**
|
||||
* 定时打印当前用户数到日志.
|
||||
*/
|
||||
|
||||
@Override
|
||||
protected void executeInternal(JobExecutionContext ctx) throws JobExecutionException {
|
||||
AccountManager accountManager = applicationContext.getBean(AccountManager.class);
|
||||
@@ -41,6 +40,6 @@ public class QuartzClusterableJob extends QuartzJobBean {
|
||||
long userCount = accountManager.getUserCount();
|
||||
String nodeName = (String) config.get("nodeName");
|
||||
|
||||
logger.info("There are {} user in database, print by {}'s job.", userCount, nodeName);
|
||||
logger.info("There are {} user in database, printed by quartz cluster job on node {}.", userCount, nodeName);
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -20,6 +20,6 @@ public class QuartzJob {
|
||||
*/
|
||||
public void execute() {
|
||||
long userCount = accountManager.getUserCount();
|
||||
logger.info("There are {} user in database.", userCount);
|
||||
logger.info("There are {} user in database, printed by quartz local job.", userCount);
|
||||
}
|
||||
}
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ import org.springside.examples.showcase.common.service.AccountManager;
|
||||
import org.springside.modules.utils.Threads;
|
||||
|
||||
/**
|
||||
* 使用Spring的ThreadPoolTaskScheduler执行Cron式任务的类.
|
||||
* 使用Spring的ThreadPoolTaskScheduler执行Cron式任务的类, 并强化了退出控制.
|
||||
*/
|
||||
public class SpringCronJob implements Runnable {
|
||||
|
||||
@@ -55,7 +55,7 @@ public class SpringCronJob implements Runnable {
|
||||
@Override
|
||||
public void run() {
|
||||
long userCount = accountManager.getUserCount();
|
||||
logger.info("There are {} user in database.", userCount);
|
||||
logger.info("There are {} user in database, printed by spring cron job.", userCount);
|
||||
}
|
||||
|
||||
public void setCronExpression(String cronExpression) {
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
<import resource="jms/applicationContext-jms-advanced.xml" />
|
||||
<import resource="jmx/applicationContext-jmx.xml" />
|
||||
<import resource="log/applicationContext-log.xml" />
|
||||
<import resource="schedule/applicationContext-executor.xml" />
|
||||
<import resource="schedule/applicationContext-jdk-timer.xml" />
|
||||
<import resource="schedule/applicationContext-spring-cron.xml" />
|
||||
<import resource="schedule/applicationContext-quartz-cron-local.xml" />
|
||||
<import resource="schedule/applicationContext-quartz-timer-cluster.xml" />
|
||||
<import resource="security/applicationContext-shiro.xml" />
|
||||
|
||||
-8
@@ -14,12 +14,4 @@
|
||||
<!-- shutdown时等待任务完成, 最多等待20秒 -->
|
||||
<property name="shutdownTimeout" value="20" />
|
||||
</bean>
|
||||
|
||||
<!-- 根据Cron表达式执行的业务类 -->
|
||||
<bean id="springCronJob" class="org.springside.examples.showcase.schedule.SpringCronJob" lazy-init="false">
|
||||
<!-- cron表达式 -->
|
||||
<property name="cronExpression" value="* 15 9-17 * * MON-FRI"/>
|
||||
<!-- shutdown时等待任务完成, 最多等待20秒 -->
|
||||
<property name="shutdownTimeout" value="20" />
|
||||
</bean>
|
||||
</beans>
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
<description>Quartz的本地Cron式执行任务配置</description>
|
||||
|
||||
<!-- Quartz本地Schduler -->
|
||||
<bean id="localQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false">
|
||||
<bean id="localQuartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
|
||||
<!-- Triggers集成 -->
|
||||
<property name="triggers">
|
||||
<list>
|
||||
@@ -24,7 +24,7 @@
|
||||
</bean>
|
||||
|
||||
<!-- Cron式Trigger定义 -->
|
||||
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
|
||||
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
|
||||
<property name="jobDetail" ref="cronJobDetail" />
|
||||
<!-- 周一至五,朝九晚五工作时间内每半小时执行一次 -->
|
||||
<property name="cronExpression" value="0 0/30 9-17 ? * MON-FRI" />
|
||||
|
||||
+3
-5
@@ -26,20 +26,18 @@
|
||||
</bean>
|
||||
|
||||
<!-- Timer式 Trigger定义-->
|
||||
<bean id="timerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
|
||||
<bean id="timerTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerFactoryBean">
|
||||
<property name="jobDetail" ref="timerJobDetail" />
|
||||
<!-- 每次执行间隔5分钟 -->
|
||||
<property name="repeatInterval" value="300000" />
|
||||
</bean>
|
||||
|
||||
<!-- Timer JobDetail, 基于JobDetailBean实例化Job Class,可持久化到数据库实现集群 -->
|
||||
<bean id="timerJobDetail" class="org.springframework.scheduling.quartz.JobDetailBean">
|
||||
<bean id="timerJobDetail" class="org.springframework.scheduling.quartz.JobDetailFactoryBean">
|
||||
<property name="jobClass" value="org.springside.examples.showcase.schedule.QuartzClusterableJob" />
|
||||
<!-- fail-over节点重新执行之前所有失败或未执行的任务, 默认为false. -->
|
||||
<property name="requestsRecovery" value="true" />
|
||||
</bean>
|
||||
|
||||
<!-- Timer Job的可配置属性 -->
|
||||
<!-- Timer Job的可配置属性,在job中通过applicationContext动态获取 -->
|
||||
<util:map id="timerJobConfig">
|
||||
<entry key="nodeName" value="${server.node_name}" />
|
||||
</util:map>
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd"
|
||||
default-lazy-init="true">
|
||||
|
||||
<description>使用Spring的 Scheduled的定时任务配置</description>
|
||||
|
||||
<!-- 根据Cron表达式执行的业务类 -->
|
||||
<bean id="springCronJob" class="org.springside.examples.showcase.schedule.SpringCronJob" lazy-init="false">
|
||||
<!-- cron表达式 -->
|
||||
<property name="cronExpression" value="* 15 9-17 * * MON-FRI"/>
|
||||
<!-- shutdown时等待任务完成, 最多等待20秒 -->
|
||||
<property name="shutdownTimeout" value="20" />
|
||||
</bean>
|
||||
</beans>
|
||||
@@ -3,6 +3,7 @@
|
||||
#============================================================================
|
||||
org.quartz.scheduler.instanceName = ClusteredScheduler
|
||||
org.quartz.scheduler.instanceId = AUTO
|
||||
org.quartz.scheduler.skipUpdateCheck = true
|
||||
|
||||
#============================================================================
|
||||
# Configure ThreadPool
|
||||
@@ -10,7 +11,6 @@ org.quartz.scheduler.instanceId = AUTO
|
||||
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
|
||||
org.quartz.threadPool.threadCount = 5
|
||||
org.quartz.threadPool.threadPriority = 5
|
||||
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
|
||||
|
||||
#============================================================================
|
||||
# Configure JobStore
|
||||
|
||||
@@ -1,3 +1,13 @@
|
||||
-- Thanks to Amir Kibbar and Peter Rietzler for contributing the schema for H2 database,
|
||||
-- and verifying that it works with Quartz's StdJDBCDelegate
|
||||
--
|
||||
-- Note, Quartz depends on row-level locking which means you must use the MVCC=TRUE
|
||||
-- setting on your H2 database, or you will experience dead-locks
|
||||
--
|
||||
--
|
||||
-- In your Quartz properties file, you'll need to set
|
||||
-- org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
|
||||
|
||||
DROP TABLE QRTZ_LOCKS IF EXISTS;
|
||||
DROP TABLE QRTZ_SCHEDULER_STATE IF EXISTS;
|
||||
DROP TABLE QRTZ_FIRED_TRIGGERS IF EXISTS;
|
||||
@@ -10,14 +20,17 @@ DROP TABLE QRTZ_SIMPLE_TRIGGERS IF EXISTS;
|
||||
DROP TABLE QRTZ_TRIGGERS IF EXISTS;
|
||||
DROP TABLE QRTZ_JOB_LISTENERS IF EXISTS;
|
||||
DROP TABLE QRTZ_JOB_DETAILS IF EXISTS;
|
||||
|
||||
DROP TABLE qrtz_simprop_triggers IF EXISTS;
|
||||
DROP TABLE QRTZ_BLOB_TRIGGERS IF EXISTS;
|
||||
|
||||
CREATE TABLE QRTZ_CALENDARS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
CALENDAR_NAME VARCHAR (200) NOT NULL ,
|
||||
CALENDAR IMAGE NOT NULL
|
||||
);
|
||||
|
||||
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 ,
|
||||
@@ -25,53 +38,52 @@ CREATE TABLE QRTZ_CRON_TRIGGERS (
|
||||
);
|
||||
|
||||
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 BIGINT 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
|
||||
);
|
||||
|
||||
CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
TRIGGER_GROUP VARCHAR (200) NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE QRTZ_SCHEDULER_STATE (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
INSTANCE_NAME VARCHAR (200) NOT NULL ,
|
||||
LAST_CHECKIN_TIME BIGINT NOT NULL ,
|
||||
CHECKIN_INTERVAL BIGINT NOT NULL
|
||||
);
|
||||
|
||||
CREATE TABLE QRTZ_LOCKS (
|
||||
SCHED_NAME VARCHAR(120) NOT NULL,
|
||||
LOCK_NAME VARCHAR (40) NOT NULL
|
||||
);
|
||||
|
||||
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 IMAGE NULL
|
||||
);
|
||||
|
||||
CREATE TABLE QRTZ_JOB_LISTENERS (
|
||||
JOB_NAME VARCHAR (200) NOT NULL ,
|
||||
JOB_GROUP VARCHAR (200) NOT NULL ,
|
||||
JOB_LISTENER VARCHAR (200) NOT NULL
|
||||
);
|
||||
|
||||
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 BIGINT NOT NULL ,
|
||||
@@ -79,24 +91,37 @@ CREATE TABLE QRTZ_SIMPLE_TRIGGERS (
|
||||
TIMES_TRIGGERED BIGINT NOT NULL
|
||||
);
|
||||
|
||||
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 INTEGER NULL,
|
||||
INT_PROP_2 INTEGER NULL,
|
||||
LONG_PROP_1 BIGINT NULL,
|
||||
LONG_PROP_2 BIGINT 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,
|
||||
);
|
||||
|
||||
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 IMAGE NULL
|
||||
);
|
||||
|
||||
CREATE TABLE QRTZ_TRIGGER_LISTENERS (
|
||||
TRIGGER_NAME VARCHAR (200) NOT NULL ,
|
||||
TRIGGER_GROUP VARCHAR (200) NOT NULL ,
|
||||
TRIGGER_LISTENER VARCHAR (200) NOT NULL
|
||||
);
|
||||
|
||||
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 BIGINT NULL ,
|
||||
PREV_FIRE_TIME BIGINT NULL ,
|
||||
@@ -113,12 +138,14 @@ CREATE TABLE QRTZ_TRIGGERS (
|
||||
ALTER TABLE QRTZ_CALENDARS ADD
|
||||
CONSTRAINT PK_QRTZ_CALENDARS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
CALENDAR_NAME
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_CRON_TRIGGERS ADD
|
||||
CONSTRAINT PK_QRTZ_CRON_TRIGGERS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
);
|
||||
@@ -126,60 +153,59 @@ ALTER TABLE QRTZ_CRON_TRIGGERS ADD
|
||||
ALTER TABLE QRTZ_FIRED_TRIGGERS ADD
|
||||
CONSTRAINT PK_QRTZ_FIRED_TRIGGERS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
ENTRY_ID
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_PAUSED_TRIGGER_GRPS ADD
|
||||
CONSTRAINT PK_QRTZ_PAUSED_TRIGGER_GRPS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_GROUP
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_SCHEDULER_STATE ADD
|
||||
CONSTRAINT PK_QRTZ_SCHEDULER_STATE PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
INSTANCE_NAME
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_LOCKS ADD
|
||||
CONSTRAINT PK_QRTZ_LOCKS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
LOCK_NAME
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_JOB_DETAILS ADD
|
||||
CONSTRAINT PK_QRTZ_JOB_DETAILS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
JOB_NAME,
|
||||
JOB_GROUP
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_JOB_LISTENERS ADD
|
||||
CONSTRAINT PK_QRTZ_JOB_LISTENERS PRIMARY KEY
|
||||
(
|
||||
JOB_NAME,
|
||||
JOB_GROUP,
|
||||
JOB_LISTENER
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD
|
||||
CONSTRAINT PK_QRTZ_SIMPLE_TRIGGERS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_TRIGGER_LISTENERS ADD
|
||||
CONSTRAINT PK_QRTZ_TRIGGER_LISTENERS PRIMARY KEY
|
||||
ALTER TABLE QRTZ_SIMPROP_TRIGGERS ADD
|
||||
CONSTRAINT PK_QRTZ_SIMPROP_TRIGGERS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP,
|
||||
TRIGGER_LISTENER
|
||||
TRIGGER_GROUP
|
||||
);
|
||||
|
||||
ALTER TABLE QRTZ_TRIGGERS ADD
|
||||
CONSTRAINT PK_QRTZ_TRIGGERS PRIMARY KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
);
|
||||
@@ -187,56 +213,51 @@ ALTER TABLE QRTZ_TRIGGERS ADD
|
||||
ALTER TABLE QRTZ_CRON_TRIGGERS ADD
|
||||
CONSTRAINT FK_QRTZ_CRON_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
) REFERENCES QRTZ_TRIGGERS (
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE QRTZ_JOB_LISTENERS ADD
|
||||
CONSTRAINT FK_QRTZ_JOB_LISTENERS_QRTZ_JOB_DETAILS FOREIGN KEY
|
||||
(
|
||||
JOB_NAME,
|
||||
JOB_GROUP
|
||||
) REFERENCES QRTZ_JOB_DETAILS (
|
||||
JOB_NAME,
|
||||
JOB_GROUP
|
||||
) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE QRTZ_SIMPLE_TRIGGERS ADD
|
||||
CONSTRAINT FK_QRTZ_SIMPLE_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
) REFERENCES QRTZ_TRIGGERS (
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
) ON DELETE CASCADE;
|
||||
|
||||
ALTER TABLE QRTZ_TRIGGER_LISTENERS ADD
|
||||
CONSTRAINT FK_QRTZ_TRIGGER_LISTENERS_QRTZ_TRIGGERS FOREIGN KEY
|
||||
ALTER TABLE QRTZ_SIMPROP_TRIGGERS ADD
|
||||
CONSTRAINT FK_QRTZ_SIMPROP_TRIGGERS_QRTZ_TRIGGERS FOREIGN KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
) REFERENCES QRTZ_TRIGGERS (
|
||||
SCHED_NAME,
|
||||
TRIGGER_NAME,
|
||||
TRIGGER_GROUP
|
||||
) ON DELETE CASCADE;
|
||||
|
||||
|
||||
ALTER TABLE QRTZ_TRIGGERS ADD
|
||||
CONSTRAINT FK_QRTZ_TRIGGERS_QRTZ_JOB_DETAILS FOREIGN KEY
|
||||
(
|
||||
SCHED_NAME,
|
||||
JOB_NAME,
|
||||
JOB_GROUP
|
||||
) REFERENCES QRTZ_JOB_DETAILS (
|
||||
SCHED_NAME,
|
||||
JOB_NAME,
|
||||
JOB_GROUP
|
||||
);
|
||||
|
||||
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');
|
||||
|
||||
COMMIT;
|
||||
|
||||
+4
-4
@@ -12,11 +12,11 @@ import org.springside.modules.test.data.H2Fixtures;
|
||||
import org.springside.modules.test.spring.SpringTxTestCase;
|
||||
import org.springside.modules.utils.Threads;
|
||||
|
||||
@Ignore("Unstatable on Slow Jenkins")
|
||||
@Ignore("Unstable on Slow Jenkins")
|
||||
@DirtiesContext
|
||||
@ContextConfiguration(locations = { "/applicationContext.xml", "/schedule/applicationContext-executor.xml" })
|
||||
@ContextConfiguration(locations = { "/applicationContext.xml", "/schedule/applicationContext-jdk-timer.xml" })
|
||||
@TransactionConfiguration(transactionManager = "defaultTransactionManager")
|
||||
public class JdkExecutorJobTest extends SpringTxTestCase {
|
||||
public class JdkTimerJobTest extends SpringTxTestCase {
|
||||
|
||||
@Test
|
||||
public void scheduleJob() throws Exception {
|
||||
@@ -31,6 +31,6 @@ public class JdkExecutorJobTest extends SpringTxTestCase {
|
||||
|
||||
//验证任务已执行
|
||||
assertEquals(1, appender.getAllLogs().size());
|
||||
assertEquals("There are 6 user in database, print by default's job.", appender.getFirstMessage());
|
||||
assertEquals("There are 6 user in database, print by jdk timer job.", appender.getFirstMessage());
|
||||
}
|
||||
}
|
||||
+4
-3
@@ -17,11 +17,11 @@ import org.springside.modules.utils.Threads;
|
||||
*
|
||||
* @author calvin
|
||||
*/
|
||||
@Ignore("Unstatable on Slow Jenkins")
|
||||
@Ignore("Unstable on Slow Jenkins")
|
||||
@DirtiesContext
|
||||
@ContextConfiguration(locations = { "/applicationContext.xml", "/schedule/applicationContext-quartz-timer-cluster.xml" })
|
||||
@TransactionConfiguration(transactionManager = "defaultTransactionManager")
|
||||
public class QuartzClusterableJobTest extends SpringTxTestCase {
|
||||
public class QuartzTimerClusterJobTest extends SpringTxTestCase {
|
||||
|
||||
@Test
|
||||
public void scheduleJob() throws Exception {
|
||||
@@ -37,6 +37,7 @@ public class QuartzClusterableJobTest extends SpringTxTestCase {
|
||||
//验证任务已执行
|
||||
assertEquals(1, appender.getAllLogs().size());
|
||||
|
||||
assertEquals("There are 6 user in database, print by default's job.", appender.getFirstMessage());
|
||||
assertEquals("There are 6 user in database, printed by quartz cluster job on node default.",
|
||||
appender.getFirstMessage());
|
||||
}
|
||||
}
|
||||
@@ -44,7 +44,7 @@ public class Threads {
|
||||
pool.shutdownNow(); // Cancel currently executing tasks
|
||||
// Wait a while for tasks to respond to being cancelled
|
||||
if (!pool.awaitTermination(shutdownNowTimeout, timeUnit)) {
|
||||
System.err.println("Pool did not terminate");
|
||||
System.err.println("Pool did not terminated");
|
||||
}
|
||||
}
|
||||
} catch (InterruptedException ie) {
|
||||
@@ -62,7 +62,7 @@ public class Threads {
|
||||
try {
|
||||
pool.shutdownNow();
|
||||
if (!pool.awaitTermination(timeout, timeUnit)) {
|
||||
System.err.println("Pool did not terminate");
|
||||
System.err.println("Pool did not terminated");
|
||||
}
|
||||
} catch (InterruptedException ie) {
|
||||
Thread.currentThread().interrupt();
|
||||
|
||||
@@ -19,7 +19,7 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springside.modules.log.MockLog4jAppender;
|
||||
|
||||
@Ignore("Unstatable on Jenkins")
|
||||
@Ignore("Unstable on Jenkins")
|
||||
public class ThreadsTest {
|
||||
|
||||
@Test
|
||||
|
||||
@@ -408,7 +408,7 @@
|
||||
<dependency>
|
||||
<groupId>org.quartz-scheduler</groupId>
|
||||
<artifactId>quartz</artifactId>
|
||||
<version>1.8.5</version>
|
||||
<version>2.1.3</version>
|
||||
</dependency>
|
||||
|
||||
<!-- CACHE begin -->
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>exec-maven-plugin</artifactId>
|
||||
<version>1.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
@@ -55,7 +54,6 @@
|
||||
<plugin>
|
||||
<groupId>org.codehaus.mojo</groupId>
|
||||
<artifactId>exec-maven-plugin</artifactId>
|
||||
<version>1.2.1</version>
|
||||
<executions>
|
||||
<execution>
|
||||
<goals>
|
||||
|
||||
Reference in New Issue
Block a user