RESOLVED - BATCH-505: Job-level ExecutionContext

added sample job
This commit is contained in:
robokaso
2008-06-12 12:37:19 +00:00
parent 446f55072d
commit 49640faef5
6 changed files with 155 additions and 0 deletions

View File

@@ -37,6 +37,7 @@
<config>src/main/resources/jobs/taskletJob.xml</config>
<config>src/main/resources/jobs/compositeItemWriterSampleJob.xml</config>
<config>src/main/resources/jobs/multiResourceJob.xml</config>
<config>src/main/resources/jobs/jobExecutionContextSample.xml</config>
</configs>
<configSets>
<configSet>
@@ -305,5 +306,16 @@
<config>src/main/resources/simple-job-launcher-context.xml</config>
</configs>
</configSet>
<configSet>
<name><![CDATA[jobExecutionContextSample]]></name>
<allowBeanDefinitionOverriding>true</allowBeanDefinitionOverriding>
<incomplete>false</incomplete>
<configs>
<config>src/main/resources/data-source-context.xml</config>
<config>src/main/resources/data-source-context-init.xml</config>
<config>src/main/resources/jobs/jobExecutionContextSample.xml</config>
<config>src/main/resources/simple-job-launcher-context.xml</config>
</configs>
</configSet>
</configSets>
</beansProjectDescription>

View File

@@ -0,0 +1,34 @@
package org.springframework.batch.sample.tasklet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.listener.StepExecutionListenerSupport;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.repeat.ExitStatus;
/**
* Dummy tasklet that retrieves message from the job execution context.
*/
public class DummyMessageReceivingTasklet extends StepExecutionListenerSupport implements Tasklet {
private static final Log logger = LogFactory.getLog(DummyMessageReceivingTasklet.class);
private String receivedMessage = null;
public void beforeStep(StepExecution stepExecution) {
ExecutionContext ctx = stepExecution.getJobExecution().getExecutionContext();
receivedMessage = ctx.getString(DummyMessageSendingTasklet.MESSAGE_KEY);
logger.info("Got message from context: " + receivedMessage);
}
public ExitStatus execute() throws Exception {
return ExitStatus.FINISHED;
}
public String getReceivedMessage() {
return receivedMessage;
}
}

View File

@@ -0,0 +1,41 @@
package org.springframework.batch.sample.tasklet;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.batch.core.StepExecution;
import org.springframework.batch.core.listener.StepExecutionListenerSupport;
import org.springframework.batch.core.step.tasklet.Tasklet;
import org.springframework.batch.item.ExecutionContext;
import org.springframework.batch.repeat.ExitStatus;
/**
* Dummy tasklet that stores a message in the job execution context.
*/
public class DummyMessageSendingTasklet extends StepExecutionListenerSupport implements Tasklet {
private static final Log logger = LogFactory.getLog(DummyMessageSendingTasklet.class);
public static final String MESSAGE_KEY = "DummyMessageSendingTasklet.MESSAGE";
private String message = "Hello!";
public ExitStatus afterStep(StepExecution stepExecution) {
ExecutionContext ctx = stepExecution.getJobExecution().getExecutionContext();
ctx.putString(MESSAGE_KEY, message);
logger.info("Put message into context: " + message);
return null;
}
public ExitStatus execute() throws Exception {
return ExitStatus.FINISHED;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}

View File

@@ -0,0 +1,32 @@
<?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.xsd">
<description>
Simple example of inter-step communication using persistent job
execution context.
</description>
<bean id="jobExecutionContextSample" parent="simpleJob">
<property name="steps">
<list>
<bean id="step1" parent="taskletStep">
<property name="tasklet" ref="sender" />
</bean>
<bean id="step2" parent="taskletStep">
<property name="tasklet" ref="receiver" />
</bean>
</list>
</property>
</bean>
<bean id="sender"
class="org.springframework.batch.sample.tasklet.DummyMessageSendingTasklet">
<property name="message" value="Hey!" />
</bean>
<bean id="receiver"
class="org.springframework.batch.sample.tasklet.DummyMessageReceivingTasklet" />
</beans>

View File

@@ -0,0 +1,26 @@
package org.springframework.batch.sample;
import org.springframework.batch.sample.tasklet.DummyMessageReceivingTasklet;
import org.springframework.batch.sample.tasklet.DummyMessageSendingTasklet;
public class JobExecutionContextSampleFunctionalTests extends AbstractValidatingBatchLauncherTests {
private DummyMessageSendingTasklet sender;
private DummyMessageReceivingTasklet receiver;
protected void validatePostConditions() throws Exception {
assertEquals(sender.getMessage(), receiver.getReceivedMessage());
}
// auto-injection setter
public void setSender(DummyMessageSendingTasklet sender) {
this.sender = sender;
}
// auto-injection setter
public void setReceiver(DummyMessageReceivingTasklet receiver) {
this.receiver = receiver;
}
}

View File

@@ -0,0 +1,10 @@
<?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-2.0.xsd">
<import resource="classpath:/simple-job-launcher-context.xml" />
<import resource="classpath:/jobs/jobExecutionContextSample.xml" />
</beans>