diff --git a/spring-batch-integration/.classpath b/spring-batch-integration/.classpath index 35c37d99e..6ceeb8b67 100644 --- a/spring-batch-integration/.classpath +++ b/spring-batch-integration/.classpath @@ -1,10 +1,10 @@ - - - - - - - - - - + + + + + + + + + + diff --git a/spring-batch-integration/pom.xml b/spring-batch-integration/pom.xml index 58dc3ad96..95fc7d23d 100644 --- a/spring-batch-integration/pom.xml +++ b/spring-batch-integration/pom.xml @@ -54,8 +54,8 @@ javax.jms - jms - 1.1 + com.springsource.javax.jms + 1.1.0 compile diff --git a/spring-batch-integration/src/main/java/org/springframework/batch/integration/job/MessageOrientedStep.java b/spring-batch-integration/src/main/java/org/springframework/batch/integration/job/MessageOrientedStep.java index 32861a2af..0aa41a53d 100644 --- a/spring-batch-integration/src/main/java/org/springframework/batch/integration/job/MessageOrientedStep.java +++ b/spring-batch-integration/src/main/java/org/springframework/batch/integration/job/MessageOrientedStep.java @@ -43,7 +43,9 @@ public class MessageOrientedStep extends AbstractStep { private MessageChannel replyChannel; - private int executionTimeoutMinutes = 30; + private static int MINUTE = 1000 * 60; + + private long executionTimeout = 30*MINUTE ; private long pollingInterval = 5; @@ -52,7 +54,15 @@ public class MessageOrientedStep extends AbstractStep { * @param executionTimeoutMinutes the timeout to set */ public void setExecutionTimeoutMinutes(int executionTimeoutMinutes) { - this.executionTimeoutMinutes = executionTimeoutMinutes; + this.executionTimeout = executionTimeoutMinutes * MINUTE; + } + + /** + * Public setter for the execution timeout in milliseconds. Defaults to 30 minutes. + * @param executionTimeout + */ + public void setExecutionTimeout(long executionTimeout) { + this.executionTimeout = executionTimeout; } /** @@ -133,7 +143,7 @@ public class MessageOrientedStep extends AbstractStep { */ private void waitForReply(Long expectedJobId) { long timeout = pollingInterval; - long maxCount = executionTimeoutMinutes * 1000 * 60 / timeout; + long maxCount = executionTimeout / timeout; long count = 0; // TODO: use a ReponseCorrelator?, or just a SynchronousChannel diff --git a/spring-batch-integration/src/test/java/org/springframework/batch/integration/job/MessageOrientedStepTests.java b/spring-batch-integration/src/test/java/org/springframework/batch/integration/job/MessageOrientedStepTests.java index 52a127916..55e619668 100644 --- a/spring-batch-integration/src/test/java/org/springframework/batch/integration/job/MessageOrientedStepTests.java +++ b/spring-batch-integration/src/test/java/org/springframework/batch/integration/job/MessageOrientedStepTests.java @@ -107,6 +107,8 @@ public class MessageOrientedStepTests { @Test public void testExecuteWithTimeout() throws Exception { try { + step.setExecutionTimeout(1000); + step.setPollingInterval(100); step.execute(jobExecution.createStepExecution(step)); fail("Expected StepExecutionTimeoutException"); }