如果编写器出现故障,则Spring批处理JSR 352不回滚事务

时间:2015-04-09 14:49:59

标签: java spring spring-batch spring-transactions

我有一个编写器,它获取记录列表并将记录保存到5个不同的表中。即,对于writeItems()方法接收的列表中的每条记录,将有5个插入查询到不同的表中。假设我的批处理是在处理输入中的第一个记录并在2个表中插入记录而未能在第3个表中插入,则前2个表中的记录不会被回滚。

我的baseContext.xml文件包含以下条目

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="${batch.jdbc.driver}" />
    <property name="url" value="${batch.jdbc.url}" />
    <property name="username" value="${batch.jdbc.user}" />
    <property name="password" value="${batch.jdbc.password}" />
    <property name="testWhileIdle" value="${batch.jdbc.testWhileIdle}" />
    <property name="validationQuery" value="${batch.jdbc.validationQuery}" />
    <property name="defaultAutoCommit" value="${batch.jdbc.defaultAutoCommit}" />
    <property name="removeAbandoned" value="${batch.jdbc.removeAbandoned}" />
    <property name="initialSize" value="${batch.jdbc.pool.initialSize}" />
    <property name="maxActive" value="${batch.jdbc.pool.maxActive}" />
</bean>

<bean id="transactionManager"
    class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

我可以找到需要插入单个表的其他批处理作业成功回滚。请求您的帮助

0 个答案:

没有答案