diff --git a/examples/showcase/pom.xml b/examples/showcase/pom.xml index 196d193f..10f5fc20 100644 --- a/examples/showcase/pom.xml +++ b/examples/showcase/pom.xml @@ -480,6 +480,9 @@ + + + diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/JdkExecutorJob.java b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/JdkExecutorJob.java index e74caa91..7920c610 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/JdkExecutorJob.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/JdkExecutorJob.java @@ -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); } /** diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzClusterableJob.java b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzClusterableJob.java index f4b4f0fa..f723e457 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzClusterableJob.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzClusterableJob.java @@ -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); } } diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzJob.java b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzJob.java index e38bb74a..1250254c 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzJob.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/QuartzJob.java @@ -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); } } diff --git a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/SpringCronJob.java b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/SpringCronJob.java index c6ea02e8..41b41d0c 100644 --- a/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/SpringCronJob.java +++ b/examples/showcase/src/main/java/org/springside/examples/showcase/schedule/SpringCronJob.java @@ -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) { diff --git a/examples/showcase/src/main/resources/applicationContext-showcases.xml b/examples/showcase/src/main/resources/applicationContext-showcases.xml index 581dd316..62ea04e9 100644 --- a/examples/showcase/src/main/resources/applicationContext-showcases.xml +++ b/examples/showcase/src/main/resources/applicationContext-showcases.xml @@ -11,7 +11,8 @@ - + + diff --git a/examples/showcase/src/main/resources/schedule/applicationContext-executor.xml b/examples/showcase/src/main/resources/schedule/applicationContext-jdk-timer.xml similarity index 69% rename from examples/showcase/src/main/resources/schedule/applicationContext-executor.xml rename to examples/showcase/src/main/resources/schedule/applicationContext-jdk-timer.xml index 953d6b26..d0202731 100644 --- a/examples/showcase/src/main/resources/schedule/applicationContext-executor.xml +++ b/examples/showcase/src/main/resources/schedule/applicationContext-jdk-timer.xml @@ -14,12 +14,4 @@ - - - - - - - - \ No newline at end of file diff --git a/examples/showcase/src/main/resources/schedule/applicationContext-quartz-cron-local.xml b/examples/showcase/src/main/resources/schedule/applicationContext-quartz-cron-local.xml index f6e7481c..ea83eee2 100644 --- a/examples/showcase/src/main/resources/schedule/applicationContext-quartz-cron-local.xml +++ b/examples/showcase/src/main/resources/schedule/applicationContext-quartz-cron-local.xml @@ -6,7 +6,7 @@ Quartz的本地Cron式执行任务配置 - + @@ -24,7 +24,7 @@ - + diff --git a/examples/showcase/src/main/resources/schedule/applicationContext-quartz-timer-cluster.xml b/examples/showcase/src/main/resources/schedule/applicationContext-quartz-timer-cluster.xml index 1cc9cf35..556b45f1 100644 --- a/examples/showcase/src/main/resources/schedule/applicationContext-quartz-timer-cluster.xml +++ b/examples/showcase/src/main/resources/schedule/applicationContext-quartz-timer-cluster.xml @@ -26,20 +26,18 @@ - + - + - - - + diff --git a/examples/showcase/src/main/resources/schedule/applicationContext-spring-cron.xml b/examples/showcase/src/main/resources/schedule/applicationContext-spring-cron.xml new file mode 100644 index 00000000..6a7b21a4 --- /dev/null +++ b/examples/showcase/src/main/resources/schedule/applicationContext-spring-cron.xml @@ -0,0 +1,15 @@ + + + + 使用Spring的 Scheduled的定时任务配置 + + + + + + + + + \ No newline at end of file diff --git a/examples/showcase/src/main/resources/schedule/quartz-cluster.properties b/examples/showcase/src/main/resources/schedule/quartz-cluster.properties index 99677b50..af9352b5 100644 --- a/examples/showcase/src/main/resources/schedule/quartz-cluster.properties +++ b/examples/showcase/src/main/resources/schedule/quartz-cluster.properties @@ -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 diff --git a/examples/showcase/src/main/resources/sql/h2/quartz.sql b/examples/showcase/src/main/resources/sql/h2/quartz.sql index a30601ac..4b6dc753 100644 --- a/examples/showcase/src/main/resources/sql/h2/quartz.sql +++ b/examples/showcase/src/main/resources/sql/h2/quartz.sql @@ -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; diff --git a/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/JdkExecutorJobTest.java b/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/JdkTimerJobTest.java similarity index 84% rename from examples/showcase/src/test/java/org/springside/examples/showcase/schedule/JdkExecutorJobTest.java rename to examples/showcase/src/test/java/org/springside/examples/showcase/schedule/JdkTimerJobTest.java index 96c17e60..d87d7a76 100644 --- a/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/JdkExecutorJobTest.java +++ b/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/JdkTimerJobTest.java @@ -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()); } } diff --git a/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/QuartzClusterableJobTest.java b/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/QuartzTimerClusterJobTest.java similarity index 84% rename from examples/showcase/src/test/java/org/springside/examples/showcase/schedule/QuartzClusterableJobTest.java rename to examples/showcase/src/test/java/org/springside/examples/showcase/schedule/QuartzTimerClusterJobTest.java index dd4d7b85..00a71b63 100644 --- a/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/QuartzClusterableJobTest.java +++ b/examples/showcase/src/test/java/org/springside/examples/showcase/schedule/QuartzTimerClusterJobTest.java @@ -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()); } } diff --git a/modules/core/src/main/java/org/springside/modules/utils/Threads.java b/modules/core/src/main/java/org/springside/modules/utils/Threads.java index 75acebed..f30b891d 100644 --- a/modules/core/src/main/java/org/springside/modules/utils/Threads.java +++ b/modules/core/src/main/java/org/springside/modules/utils/Threads.java @@ -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(); diff --git a/modules/core/src/test/java/org/springside/modules/utils/ThreadsTest.java b/modules/core/src/test/java/org/springside/modules/utils/ThreadsTest.java index 4ad6db74..c8efe7e3 100644 --- a/modules/core/src/test/java/org/springside/modules/utils/ThreadsTest.java +++ b/modules/core/src/test/java/org/springside/modules/utils/ThreadsTest.java @@ -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 diff --git a/modules/parent/pom.xml b/modules/parent/pom.xml index acb2ddd7..3e44c4ff 100644 --- a/modules/parent/pom.xml +++ b/modules/parent/pom.xml @@ -408,7 +408,7 @@ org.quartz-scheduler quartz - 1.8.5 + 2.1.3 diff --git a/support/h2/pom.xml b/support/h2/pom.xml index 6ba8651a..593067c3 100644 --- a/support/h2/pom.xml +++ b/support/h2/pom.xml @@ -26,7 +26,6 @@ org.codehaus.mojo exec-maven-plugin - 1.2.1 @@ -55,7 +54,6 @@ org.codehaus.mojo exec-maven-plugin - 1.2.1