2015-05-28 3 views
1

У меня есть составной файл, содержащий 2 делегата-делегата: 1. HeaderWriter для записи некоторых полей из моего объекта в таблицу заголовков 2. DetailWriter для записи записей в таблицу подробностей.Весенний пакетный композитор не катится назад

Проблема, когда в DetailWriter возникает исключение, данные не возвращаются из Headerwriter. Похоже, данные обновляются в двух разных транзакциях. Как обеспечить целостность данных, имея оба обновления в одной транзакции?


FYI, я использую Informix и пришлось расширить некоторые из Спринг пакетных классов к получить 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> 
+0

Вы можете поделиться своим опытом? –

ответ