spring batch compositeitemwriter不回滚

时间:2015-05-28 14:05:45

标签: transactions spring-batch

我有一个有两个委托编写器的compositeItemWriter: 1. HeaderWriter将我的对象中的一些字段写入Header Table 2. DetailWriter将fileds写入详细信息表。

问题是,当DetailWriter中发生异常时,数据不会从Headerwriter回滚。看起来数据正在2个不同的交易中更新。 如何通过在同一事务中同时进行更新来强制执行数据完整性?

仅供参考,我正在使用Informix并且必须将一些Spring批处理类扩展到 让Spring在Informix上工作。

我的配置如下:

来自reportjob.xml的部分:

<bean id="programHeaderWriter"   
class="com.bah.discrepancy.writer.ProgramHeaderWriter">
    <property name="dataSource" ref="dataSource" />  
    <property name="itemSqlParameterSourceProvider">
    <bean   
 class="com.bah.discrepancy.parametermapper.ProgramHdrParameterMapper"/>
    </property>
 </bean>
<bean id="programDetailWriter"  
class="com.bah.discrepancy.writer.ProgramDetailWriter">
    <property name="dataSource" ref="dataSource" />  
    <property name="itemSqlParameterSourceProvider">
    <bean 
 class="com.bah.discrepancy.parametermapper.ProgramDetailParamMapper" />
    </property>
 </bean>

Context.xml:

<bean id="transactionManager"       
class="org.springframework.batch.support.transaction.ResourcelessTransaction
    Manager" />

<bean id="batchDefaultSerializer"  
class="org.springframework.batch.core.repository.dao.
DefaultExecutionContextSerializer" />

<bean id="dataSource"  
class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.informix.jdbc.IfxDriver"
         />
        <property name="url" value="<URL>" />
        <property name="username" value="<UserID>" />
        <property name="password" value="<Password>" />
    </bean>



    <bean id="jobRepository"  
     class="com.bah.batch.informixsupport.InformixJobRepositoryFactoryBean">
        <property name="dataSource" ref="dataSource" />
        <property name="databaseType" value="Informix"/>
        <property name="incrementerFactory" ref="informixIncrementer"/>
        <property name="transactionManager" ref="transactionManager"/>
        <property name="tablePrefix" value="BATCH_" />
    </bean>

1 个答案:

答案 0 :(得分:0)

希望这次肯定会得到解决。但只是想检查一下你是否以下列方式或任何其他方式解决了问题?

Spring Batch CompositeItemWriter Transaction Roll back issue