当前位置: 首页 > 知识库问答 >
问题:

Spring Batch--如何防止Batch在DB中存储事务

咸承教
2023-03-14

首先,问题陈述:我在我的开发环境中使用Spring-Batch很好。当我将代码移动到生产环境时,我遇到了一个问题。在我的开发环境中,Spring-Batch能够在我们的DB2数据库服务器中创建它的事务数据表。当我们去PROD时,这不是一个选项,因为这是一个只读的工作。

尝试的解决方案:

@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();
}
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,所以我边走边自学。我对其他解决方案持开放态度,比如内存数据库,但我也无法让它们工作。我不需要在运行之间保存任何状态或会话信息,但我正在运行的数据库查询将返回大约100万行,因此我需要以块的形式获取这些信息。

如有任何建议或帮助,将不胜感激。

共有1个答案

秋和雅
2023-03-14

将这些bean添加到AppClass

@Bean
public PlatformTransactionManager transactionManager() {
    return new ResourcelessTransactionManager();
}


@Bean
public JobExplorer jobExplorer() throws Exception {
    MapJobExplorerFactoryBean jobExplorerFactory = new MapJobExplorerFactoryBean(mapJobRepositoryFactoryBean());
    jobExplorerFactory.afterPropertiesSet();
    return jobExplorerFactory.getObject();
}

@Bean
public MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean() {
    MapJobRepositoryFactoryBean mapJobRepositoryFactoryBean = new MapJobRepositoryFactoryBean();
    mapJobRepositoryFactoryBean.setTransactionManager(transactionManager());
    return mapJobRepositoryFactoryBean;
}

@Bean
public JobRepository jobRepository() throws Exception {
    return mapJobRepositoryFactoryBean().getObject();
}

@Bean
public JobLauncher jobLauncher() throws Exception {
    SimpleJobLauncher simpleJobLauncher = new SimpleJobLauncher();
    simpleJobLauncher.setJobRepository(jobRepository());
    return simpleJobLauncher;
}
 类似资料:
  • 问题内容: 我需要停止浏览器存储用户名和密码值,因为我正在处理包含更多安全数据的Web应用程序。客户要求我这样做。 我尝试了HTML表单和密码字段中的属性。但它无法在最新的浏览器(例如Chrome 55,Firefox 38+,IE 11等)中运行。 最好的解决方案是什么? 问题答案: 感谢您给我回复。我点击了以下链接 禁用浏览器的“保存密码”功能 我通过仅在输入中添加&属性来解决此问题,如下所示

  • 问题内容: 我有一些使用Tyre gem在Elasticsearch中建立索引的PDF附件。一切都很好,但是我将拥有许多GB的PDF,我们可能会将PDF存储在S3中以进行访问。现在,base64编码的PDF存储在Elasticsearch _source中,这将使索引很大。我想对附件建立索引,但不进行存储,并且我还没有弄清楚正确的方法可以放入Tire的“映射”块中以防止它出现。现在的代码块是这样的

  • 根据规范,当使用写入模式时,Hazelcast执行以下操作: 通过将write-delay-seconds属性设置为0,可以将MapStore配置为直写。这意味着条目将同步放入数据存储区。

  • 问题内容: 调用的方法: 1. Struts Action 2.服务类方法(由@Transactional注释) 3. Xfire Web服务调用 包括struts(DelegatingActionProxy)和事务在内的所有内容都使用Spring进行配置。 持久性是通过JPA / Hibernate完成的。 有时,Web服务将引发未经检查的异常。我捕获了此异常并抛出了一个已检查的异常。我不希望事

  • 问题内容: 我真的是编程新手,但我正在研究它。我有一个我不知道如何解决的问题。我在mongoDB中收集了许多文档,并且正在使用Elasticsearch查询字段。问题是我想将搜索的输出存储回mongoDB中,但存储在不同的DB中。我知道我必须创建一个临时数据库,该数据库必须随每个搜索结果进行更新。但是该怎么做呢?或者给我阅读文档,以便我可以学习。我将非常感谢您的帮助! 问题答案: Mongo本身不

  • 问题内容: 我已经编写了一个Linux驱动程序,该驱动程序ioremaps将特定设备的PCI BAR0导出为sysfs二进制属性,允许用户空间直接控制它。 当我尝试在属性顶部使用MMAP来直接访问该位内存(从Userland程序)时,问题就浮现了。读取可以很好地完成并返回期望值,尽管当我写入该内存时,它似乎被缓存在内核和内存之间的某个地方,而不是传递给GM​​CH根联合体(以及设备)。我想做的是每