У меня есть составной файл, содержащий 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>
Вы можете поделиться своим опытом? –