Merging changes from branch...

BATCH-1323: Modify skip/retry/no-rollback exception class configurations to allow for include/exclude
BATCH-1339: Move task-executor attribute up from <chunk/> to <tasklet/>
BATCH-1348: Allow inlining of reader/writer/processor into <chunk/>
BATCH-1357: Allow empty <listeners/>, <retry-listeners/>, and <streams/> lists
BATCH-1358: Move InfiniteLoopIncrementer into core, and rename it to RunIdIncrementer
BATCH-1367: Syntactic sugar for Item*Adapter in namespace
BATCH-1375: Give CompositeItemProcessor's and CompositeItemWriter's property the same name (delegates)
This commit is contained in:
dhgarrette
2009-08-23 15:17:20 +00:00
parent 9e8bdba83d
commit 8146e55503
72 changed files with 1168 additions and 902 deletions

View File

@@ -11,19 +11,19 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="5" skip-limit="5" retry-limit="3">
<skippable-exception-classes merge="true">
java.lang.NullPointerException
<include class="java.lang.NullPointerException"/>
<exclude class="org.springframework.dao.CannotAcquireLockException"/>
</skippable-exception-classes>
<fatal-exception-classes merge="true">
org.springframework.dao.CannotAcquireLockException
</fatal-exception-classes>
<retryable-exception-classes>
org.springframework.dao.DeadlockLoserDataAccessException
<include class="org.springframework.dao.DeadlockLoserDataAccessException"/>
</retryable-exception-classes>
<streams merge="true">
<stream ref="stream1"/>
</streams>
<retry-listeners merge="true">
<listener class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
</listener>
</retry-listeners>
</chunk>
</tasklet>
@@ -33,19 +33,19 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="5" skip-limit="5" retry-limit="3">
<skippable-exception-classes>
java.lang.NullPointerException
<include class="java.lang.NullPointerException"/>
<exclude class="org.springframework.dao.CannotAcquireLockException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.dao.CannotAcquireLockException
</fatal-exception-classes>
<retryable-exception-classes>
org.springframework.dao.DeadlockLoserDataAccessException
<include class="org.springframework.dao.DeadlockLoserDataAccessException"/>
</retryable-exception-classes>
<streams>
<stream ref="stream1"/>
</streams>
<retry-listeners>
<listener class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
</listener>
</retry-listeners>
</chunk>
</tasklet>
@@ -56,16 +56,16 @@
<tasklet>
<chunk>
<skippable-exception-classes>
java.lang.ArithmeticException
<include class="java.lang.ArithmeticException"/>
<exclude class="org.springframework.dao.DeadlockLoserDataAccessException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.dao.DeadlockLoserDataAccessException
</fatal-exception-classes>
<streams>
<stream ref="stream2"/>
</streams>
<retry-listeners>
<listener class="org.springframework.batch.retry.listener.RetryListenerSupport"/>
<listener>
<beans:bean class="org.springframework.batch.retry.listener.RetryListenerSupport"/>
</listener>
</retry-listeners>
</chunk>
</tasklet>

View File

@@ -0,0 +1,45 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/batch" xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/batch http://www.springframework.org/schema/batch/spring-batch-2.0.xsd
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
<beans:import resource="common-context.xml" />
<step id="inlineHandlers">
<tasklet>
<chunk commit-interval="5">
<reader>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestReader"/>
</reader>
<processor>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestProcessor"/>
</processor>
<writer>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestWriter"/>
</writer>
</chunk>
</tasklet>
</step>
<step id="inlineAdapters">
<tasklet>
<chunk commit-interval="5">
<reader adapter-method="dummyRead">
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyItemHandlerAdapter"/>
</reader>
<processor adapter-method="dummyProcess">
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyItemHandlerAdapter"/>
</processor>
<writer adapter-method="dummyWrite">
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyItemHandlerAdapter"/>
</writer>
</chunk>
</tasklet>
</step>
</beans:beans>

View File

@@ -10,8 +10,12 @@
<step id="s1" parent="step1"/>
<listeners>
<listener after-job-method="afterJob" ref="testListener"/>
<listener after-job-method="afterJob" class="org.springframework.batch.core.configuration.xml.TestJobListener"/>
<listener class="org.springframework.batch.core.configuration.xml.JobExecutionListenerParserTests$TestComponent"/>
<listener after-job-method="afterJob">
<beans:bean class="org.springframework.batch.core.configuration.xml.TestJobListener"/>
</listener>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.JobExecutionListenerParserTests$TestComponent"/>
</listener>
</listeners>
</job>

View File

@@ -10,7 +10,9 @@
<step id="s1"><tasklet ref="dummyTasklet"/></step>
<listeners merge="true">
<listener class="org.springframework.batch.core.listener.JobExecutionListenerSupport"/>
<listener>
<beans:bean class="org.springframework.batch.core.listener.JobExecutionListenerSupport"/>
</listener>
</listeners>
</job>
@@ -18,7 +20,9 @@
<step id="s2"><tasklet ref="dummyTasklet"/></step>
<listeners>
<listener class="org.springframework.batch.core.listener.JobExecutionListenerSupport"/>
<listener>
<beans:bean class="org.springframework.batch.core.listener.JobExecutionListenerSupport"/>
</listener>
</listeners>
</job>
@@ -50,16 +54,22 @@
<job id="baseJob" abstract="true">
<listeners>
<listener class="org.springframework.batch.core.configuration.xml.DummyAnnotationJobExecutionListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyAnnotationJobExecutionListener"/>
</listener>
</listeners>
</job>
<job-listener id="listener1" class="org.springframework.batch.core.configuration.xml.DummyAnnotationJobExecutionListener"/>
<job-listener id="listener1">
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyAnnotationJobExecutionListener"/>
</job-listener>
<beans:bean id="baseJob3" abstract="true">
<beans:property name="jobExecutionListeners">
<beans:list>
<job-listener class="org.springframework.batch.core.listener.JobExecutionListenerSupport"/>
<job-listener>
<beans:bean class="org.springframework.batch.core.listener.JobExecutionListenerSupport"/>
</job-listener>
</beans:list>
</beans:property>
</beans:bean>
@@ -68,7 +78,7 @@
<job id="listenerClearingJob" parent="baseJob">
<step id="listenerClearingJobStep"><tasklet ref="dummyTasklet"/></step>
<!--TODO BATCH-1357: <listeners/>-->
<listeners/>
</job>
</beans:beans>

View File

@@ -10,7 +10,9 @@
<step id="s1" parent="baseStep" next="s2">
<tasklet ref="dummyTasklet">
<listeners merge="true">
<listener class="org.springframework.batch.core.configuration.xml.DummyAnnotationStepExecutionListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyAnnotationStepExecutionListener"/>
</listener>
<listener ref="toplevel1"/>
</listeners>
</tasklet>
@@ -19,20 +21,28 @@
<step id="s2" parent="baseStep">
<tasklet ref="dummyTasklet">
<listeners>
<listener class="org.springframework.batch.core.listener.StepExecutionListenerSupport"/>
<listener>
<beans:bean class="org.springframework.batch.core.listener.StepExecutionListenerSupport"/>
</listener>
<listener ref="toplevel2"/>
</listeners>
</tasklet>
</step>
</job>
<step-listener id="toplevel1" class="org.springframework.batch.core.listener.StepExecutionListenerSupport"/>
<step-listener id="toplevel2" class="org.springframework.batch.core.configuration.xml.DummyAnnotationStepExecutionListener"/>
<step-listener id="toplevel1">
<beans:bean class="org.springframework.batch.core.listener.StepExecutionListenerSupport"/>
</step-listener>
<step-listener id="toplevel2">
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyAnnotationStepExecutionListener"/>
</step-listener>
<beans:bean id="baseStep" abstract="true">
<beans:property name="listeners">
<beans:list>
<step-listener class="org.springframework.batch.core.listener.CompositeStepExecutionListener"/>
<step-listener>
<beans:bean class="org.springframework.batch.core.listener.CompositeStepExecutionListener"/>
</step-listener>
</beans:list>
</beans:property>
</beans:bean>

View File

@@ -8,24 +8,25 @@
<job id="job">
<step id="step">
<tasklet>
<tasklet task-executor="taskExecutor">
<chunk reader="reader" processor="processor" writer="writer" commit-interval="10" skip-limit="20"
retry-limit="3" cache-capacity="100" is-reader-transactional-queue="true"
task-executor="taskExecutor">
retry-limit="3" cache-capacity="100" is-reader-transactional-queue="true">
<retry-listeners>
<listener class="org.springframework.batch.core.configuration.xml.TestRetryListener" ref="retryListener" />
<listener ref="retryListener">
<beans:bean class="org.springframework.batch.core.configuration.xml.TestRetryListener"/>
</listener>
</retry-listeners>
<streams>
<stream ref="reader" />
</streams>
<skippable-exception-classes>
org.springframework.dao.DataIntegrityViolationException,
<include class="org.springframework.dao.DataIntegrityViolationException"/>
</skippable-exception-classes>
</chunk>
<transaction-attributes propagation="REQUIRED" isolation="DEFAULT" timeout="10" />
<no-rollback-exception-classes>
org.springframework.dao.DataIntegrityViolationException
</no-rollback-exception-classes>
<include class="org.springframework.dao.DataIntegrityViolationException"/>
</no-rollback-exception-classes>
<listeners>
<listener ref="listener" />
</listeners>

View File

@@ -10,7 +10,9 @@
<step id="ft-step">
<tasklet ref="tasklet">
<listeners>
<listener ref="listener" class="org.springframework.batch.core.configuration.xml.TestListener"/>
<listener ref="listener">
<beans:bean class="org.springframework.batch.core.configuration.xml.TestListener"/>
</listener>
</listeners>
</tasklet>
</step>

View File

@@ -85,7 +85,9 @@
<tasklet>
<transaction-attributes timeout="10"/>
<listeners>
<listener class="org.springframework.batch.core.listener.StepExecutionListenerSupport" />
<listener>
<beans:bean class="org.springframework.batch.core.listener.StepExecutionListenerSupport" />
</listener>
</listeners>
</tasklet>
</step>
@@ -149,26 +151,28 @@
<tasklet>
<chunk>
<skippable-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
<exclude class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.batch.core.step.item.FatalRuntimeException
</fatal-exception-classes>
<retryable-exception-classes>
org.springframework.dao.DeadlockLoserDataAccessException
<include class="org.springframework.dao.DeadlockLoserDataAccessException"/>
</retryable-exception-classes>
<streams>
<stream ref="stream1"/>
</streams>
<retry-listeners>
<listener class="org.springframework.batch.retry.listener.RetryListenerSupport"/>
<listener>
<beans:bean class="org.springframework.batch.retry.listener.RetryListenerSupport"/>
</listener>
</retry-listeners>
</chunk>
<listeners>
<listener class="org.springframework.batch.core.listener.StepExecutionListenerSupport"/>
<listener>
<beans:bean class="org.springframework.batch.core.listener.StepExecutionListenerSupport"/>
</listener>
</listeners>
<no-rollback-exception-classes>
org.springframework.batch.core.step.item.FatalRuntimeException
<include class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -177,26 +181,28 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="10">
<skippable-exception-classes merge="true">
org.springframework.batch.core.step.item.SkippableException
<include class="org.springframework.batch.core.step.item.SkippableException"/>
<exclude class="org.springframework.batch.core.step.item.FatalException"/>
</skippable-exception-classes>
<fatal-exception-classes merge="true">
org.springframework.batch.core.step.item.FatalException
</fatal-exception-classes>
<retryable-exception-classes merge="true">
org.springframework.batch.core.step.item.FatalException
<include class="org.springframework.batch.core.step.item.FatalException"/>
</retryable-exception-classes>
<streams merge="true">
<stream ref="stream2"/>
</streams>
<retry-listeners merge="true">
<listener class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
</listener>
</retry-listeners>
</chunk>
<listeners merge="true">
<listener class="org.springframework.batch.core.listener.CompositeStepExecutionListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.listener.CompositeStepExecutionListener"/>
</listener>
</listeners>
<no-rollback-exception-classes merge="true">
org.springframework.batch.core.step.item.SkippableRuntimeException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -205,26 +211,28 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="10">
<skippable-exception-classes>
org.springframework.batch.core.step.item.SkippableException
<include class="org.springframework.batch.core.step.item.SkippableException"/>
<exclude class="org.springframework.batch.core.step.item.FatalException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.batch.core.step.item.FatalException
</fatal-exception-classes>
<retryable-exception-classes>
org.springframework.batch.core.step.item.FatalException
<include class="org.springframework.batch.core.step.item.FatalException"/>
</retryable-exception-classes>
<streams>
<stream ref="stream2"/>
</streams>
<retry-listeners>
<listener class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.DummyRetryListener"/>
</listener>
</retry-listeners>
</chunk>
<listeners>
<listener class="org.springframework.batch.core.listener.CompositeStepExecutionListener"/>
<listener>
<beans:bean class="org.springframework.batch.core.listener.CompositeStepExecutionListener"/>
</listener>
</listeners>
<no-rollback-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -233,12 +241,11 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="10">
<skippable-exception-classes/>
<fatal-exception-classes/>
<retryable-exception-classes/>
<!--TODO BATCH-1357: <streams/>-->
<!--TODO BATCH-1357: <retry-listeners/>-->
<streams/>
<retry-listeners/>
</chunk>
<!--TODO BATCH-1357: <listeners/>-->
<listeners/>
<no-rollback-exception-classes/>
</tasklet>
</step>

View File

@@ -6,29 +6,28 @@
<job id="job">
<step id="step">
<tasklet start-limit="25" allow-start-if-complete="true">
<tasklet start-limit="25" allow-start-if-complete="true" task-executor="taskExecutor">
<chunk reader="reader" processor="processor" writer="writer" commit-interval="10" skip-limit="20"
retry-limit="3" cache-capacity="100" is-reader-transactional-queue="true"
task-executor="taskExecutor">
retry-limit="3" cache-capacity="100" is-reader-transactional-queue="true">
<retry-listeners>
<listener class="org.springframework.batch.core.configuration.xml.TestRetryListener" />
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestRetryListener" />
</listener>
</retry-listeners>
<streams>
<stream ref="reader" />
</streams>
<fatal-exception-classes>
org.springframework.jdbc.BadSqlGrammarException
</fatal-exception-classes>
<skippable-exception-classes>
org.springframework.dao.DataIntegrityViolationException
<include class="org.springframework.dao.DataIntegrityViolationException"/>
<exclude class="org.springframework.jdbc.BadSqlGrammarException"/>
</skippable-exception-classes>
<retryable-exception-classes>
org.springframework.dao.DeadlockLoserDataAccessException
<include class="org.springframework.dao.DeadlockLoserDataAccessException"/>
</retryable-exception-classes>
</chunk>
<transaction-attributes propagation="REQUIRED" isolation="DEFAULT" timeout="10" />
<no-rollback-exception-classes>
org.springframework.dao.DataIntegrityViolationException
<include class="org.springframework.dao.DataIntegrityViolationException"/>
</no-rollback-exception-classes>
<listeners>
<listener ref="listener" />

View File

@@ -16,8 +16,9 @@
</streams>
</chunk>
<listeners>
<listener class="org.springframework.batch.core.configuration.xml.TestListener"
after-step-method="destroy"/>
<listener after-step-method="destroy">
<beans:bean class="org.springframework.batch.core.configuration.xml.TestListener"/>
</listener>
<listener ref="listener"/>
</listeners>
</tasklet>

View File

@@ -8,29 +8,35 @@
<job id="job">
<step id="step">
<tasklet>
<chunk reader="reader" processor="processor" writer="writer" commit-interval="10" skip-limit="20"
retry-limit="3" cache-capacity="100" is-reader-transactional-queue="true" task-executor="taskExecutor">
<tasklet task-executor="taskExecutor">
<chunk reader="reader" processor="processor" writer="writer"
commit-interval="10" skip-limit="20" retry-limit="3" cache-capacity="100"
is-reader-transactional-queue="true">
<retry-listeners>
<listener ref="retryListener" />
<listener class="org.springframework.batch.core.configuration.xml.TestRetryListener" />
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestRetryListener" />
</listener>
</retry-listeners>
<streams>
<stream ref="reader" />
</streams>
<skippable-exception-classes>
org.springframework.dao.DataIntegrityViolationException
<include class="org.springframework.dao.DataIntegrityViolationException"/>
</skippable-exception-classes>
<retryable-exception-classes>
org.springframework.dao.DeadlockLoserDataAccessException
<include class="org.springframework.dao.DeadlockLoserDataAccessException"/>
</retryable-exception-classes>
</chunk>
<transaction-attributes propagation="REQUIRED" isolation="DEFAULT" timeout="10" />
<no-rollback-exception-classes>
org.springframework.dao.DataIntegrityViolationException
<include class="org.springframework.dao.DataIntegrityViolationException"/>
</no-rollback-exception-classes>
<listeners>
<listener class="org.springframework.batch.core.configuration.xml.TestListener" />
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestListener" />
</listener>
<listener ref="listener" />
</listeners>
</tasklet>
@@ -38,9 +44,9 @@
</job>
<beans:bean id="reader" class="org.springframework.batch.core.configuration.xml.TestReader" />
<beans:bean id="processor" class="org.springframework.batch.core.configuration.xml.TestProcessor" />
<beans:bean id="writer" class="org.springframework.batch.core.configuration.xml.TestWriter" />
<beans:bean id="listener" class="org.springframework.batch.core.configuration.xml.TestListener" />

View File

@@ -10,8 +10,9 @@
<step id="stop">
<tasklet ref="nameStoringTasklet">
<listeners>
<listener
class="org.springframework.batch.core.configuration.xml.TestCustomStatusListener" />
<listener>
<beans:bean class="org.springframework.batch.core.configuration.xml.TestCustomStatusListener"/>
</listener>
</listeners>
</tasklet>
<stop on="FOO" restart="s2" />

View File

@@ -15,8 +15,8 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="1">
<skippable-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
org.springframework.batch.core.step.item.SkippableException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
<include class="org.springframework.batch.core.step.item.SkippableException"/>
</skippable-exception-classes>
</chunk>
</tasklet>
@@ -26,13 +26,11 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="1">
<skippable-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
org.springframework.batch.core.step.item.SkippableException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
<include class="org.springframework.batch.core.step.item.SkippableException"/>
<exclude class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
<exclude class="org.springframework.batch.core.step.item.FatalException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.batch.core.step.item.FatalRuntimeException
org.springframework.batch.core.step.item.FatalException
</fatal-exception-classes>
</chunk>
</tasklet>
</step>
@@ -41,15 +39,13 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="5" retry-limit="2">
<skippable-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
org.springframework.batch.core.step.item.SkippableException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
<include class="org.springframework.batch.core.step.item.SkippableException"/>
<exclude class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
<exclude class="org.springframework.batch.core.step.item.FatalException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.batch.core.step.item.FatalRuntimeException
org.springframework.batch.core.step.item.FatalException
</fatal-exception-classes>
<retryable-exception-classes>
java.lang.Exception
<include class="java.lang.Exception"/>
</retryable-exception-classes>
</chunk>
</tasklet>
@@ -60,11 +56,11 @@
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="1">
<skippable-exception-classes>
<!-- this is a subclass of IllegalStateException (no-rollback) -->
java.util.FormatterClosedException
<include class="java.util.FormatterClosedException"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
java.lang.IllegalStateException
<include class="java.lang.IllegalStateException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -73,11 +69,11 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="1">
<skippable-exception-classes>
java.lang.IllegalStateException
<include class="java.lang.IllegalStateException"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
java.lang.RuntimeException
<include class="java.lang.RuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -86,14 +82,14 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="1">
<skippable-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
org.springframework.batch.core.step.item.SkippableException
org.springframework.batch.core.step.item.FatalRuntimeException
org.springframework.batch.core.step.item.FatalException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
<include class="org.springframework.batch.core.step.item.SkippableException"/>
<include class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
<include class="org.springframework.batch.core.step.item.FatalException"/>
</skippable-exception-classes>
</chunk>
<no-rollback-exception-classes>
org.springframework.batch.core.step.item.FatalRuntimeException
<include class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -102,17 +98,15 @@
<tasklet>
<chunk reader="reader" writer="writer" commit-interval="4" skip-limit="1">
<skippable-exception-classes>
java.lang.Exception
<include class="java.lang.Exception"/>
<exclude class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
<exclude class="org.springframework.batch.core.step.item.SkippableException"/>
<exclude class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
<exclude class="org.springframework.batch.core.step.item.FatalException"/>
</skippable-exception-classes>
<fatal-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
org.springframework.batch.core.step.item.SkippableException
org.springframework.batch.core.step.item.FatalRuntimeException
org.springframework.batch.core.step.item.FatalException
</fatal-exception-classes>
</chunk>
<no-rollback-exception-classes>
org.springframework.batch.core.step.item.FatalRuntimeException
<include class="org.springframework.batch.core.step.item.FatalRuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -120,7 +114,7 @@
<step id="noRollbackTasklet" xmlns="http://www.springframework.org/schema/batch">
<tasklet ref="tasklet">
<no-rollback-exception-classes>
org.springframework.batch.core.step.item.SkippableRuntimeException
<include class="org.springframework.batch.core.step.item.SkippableRuntimeException"/>
</no-rollback-exception-classes>
</tasklet>
</step>
@@ -156,4 +150,4 @@
<bean id="transactionManager" class="org.springframework.batch.support.transaction.ResourcelessTransactionManager" />
</beans>
</beans>