【发布时间】:2016-06-09 17:46:52
【问题描述】:
首先是问题陈述: 我在我的 DEV 环境中使用 Spring-Batch 很好。当我将代码移动到生产环境时,我遇到了问题。在我的 DEV 环境中,Spring-Batch 能够毫无问题地在我们的 DB2 数据库服务器中创建它的事务数据表。当我们转到 PROD 时,这不是一个选项,因为这是一项只读作业。
尝试的解决方案:
搜索堆栈溢出我发现了这个帖子: Spring-Batch without persisting metadata to database?
这听起来很完美,所以我添加了
@Bean
public ResourcelessTransactionManager transactionManager() {
return new ResourcelessTransactionManager();
}
@Bean
public JobRepository jobRepository(ResourcelessTransactionManager transactionManager) throws Exception {
MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean(transactionManager);
mapJobRepositoryFactoryBean.setTransactionManager(transactionManager);
return mapJobRepositoryFactoryBean.getObject();
}
我还通过调用 .reporitory(jobRepository) 将其添加到我的作业中。
但我明白了
Caused by: java.lang.NullPointerException: null
at org.springframework.batch.core.repository.dao.MapJobExecutionDao.synchronizeStatus(MapJobExecutionDao.java:158) ~[spring-batch-core-3.0.6.RELEASE.jar:3.0.6.RELEASE]
所以我不确定在这里做什么。我是 Spring 新手,所以我一边走一边自学。我对其他解决方案持开放态度,例如内存数据库,但我也无法让它们工作。我不需要在运行之间保存任何状态或会话信息,但我正在运行的数据库查询将返回大约一百万行左右,所以我需要分块获取。
任何建议或帮助将不胜感激。
【问题讨论】:
标签: spring-batch spring-java-config