Раньше приложение не сохраняло состояния пакета, оно использовало репозиторий заданий «на основе карты».
Поскольку этот репозиторий на основе карты полностью удален в версии 5, мне приходится перейти на репозиторий на основе таблиц JDBC. Я прочитал руководство по миграции ( https://github.com/spring-projects/spri ... tion-Guide ) и в соответствии с ним изменил следующую часть приложения:
Код: Выделить всё
return new StepBuilder("cnyProcessStep", jobRepository) //
.allowStartIfComplete(true)//
. chunk(1)
.reader(cnyPushItemReader) //
.processor(compositeProcessor) //
.writer(cnyPushItemWriter) //
.faultTolerant()
.skipPolicy((t, skipCount) -> true) //
.listener(defaultBatchListener) //
.transactionAttribute(new DefaultTransactionAttribute(TransactionDefinition.PROPAGATION_NEVER))
.build();
Код: Выделить всё
...
@Autowired
private PlatformTransactionManager transactionManager;
...
return new StepBuilder("cnyProcessStep", jobRepository) //
.allowStartIfComplete(true)//
. chunk(1, transactionManager)
.reader(cnyPushItemReader) //
.processor(compositeProcessor) //
.writer(cnyPushItemWriter) //
.faultTolerant()
.skipPolicy((t, skipCount) -> true) //
.listener(defaultBatchListener) //
.transactionAttribute(new DefaultTransactionAttribute(TransactionDefinition.PROPAGATION_NEVER))
.build();
Я также создал необходимые таблицы и последовательности для схемы базы данных (schema-oracle.sql из артефакта пакетного ядра).
После этих изменений задание выдает следующее исключение при выполнении:
Код: Выделить всё
...
Caused by: org.springframework.transaction.InvalidIsolationLevelException: DefaultJpaDialect does not support custom isolation levels due to limitations in standard JPA. Specific arrangements may be implemented in custom JpaDialect variants.
at org.springframework.orm.jpa.DefaultJpaDialect.beginTransaction(DefaultJpaDialect.java:64)
at org.springframework.orm.jpa.JpaTransactionManager.doBegin(JpaTransactionManager.java:421)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.startTransaction(AbstractPlatformTransactionManager.java:532)
at org.springframework.transaction.support.AbstractPlatformTransactionManager.getTransaction(AbstractPlatformTransactionManager.java:405)
at org.springframework.transaction.interceptor.TransactionAspectSupport.createTransactionIfNecessary(TransactionAspectSupport.java:639)
at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:374)
at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:119)
at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:184)
at org.springframework.aop.framework.JdkDynamicAopProxy.invoke(JdkDynamicAopProxy.java:223)
at jdk.proxy2/jdk.proxy2.$Proxy375.getLastJobExecution(Unknown Source)
at org.springframework.batch.core.launch.support.TaskExecutorJobLauncher.run(TaskExecutorJobLauncher.java:109)
Подробнее здесь: https://stackoverflow.com/questions/798 ... ading-to-s
Мобильная версия