我正在使用spring批处理应用程序与读取器、写入器和处理器。文件名从batchjob传递到StepScope中的writer。当bean初始化时,我可以在BATCH_STEP_EXECUTION表中看到异常,如下org.springframework.beans.factory.BeanCreationException:创建类路径资源中定义的名为'scopedtarget.reswriter'的bean时出错:通过工厂方法实例化bean失败;嵌套异常为org.springframework.beans.beanInstantiationException:无法实例化[org.springframework.batch.item.file.FlatFileItemWriter]:工厂方法“res writer”引发异常;嵌套异常为java.lang.IllegalArgumentException:路径必须不为空
Spring批处理代码
@StepScope
@Bean
public FlatFileItemWriter<EntityObject> regulatedEntityWriter(@Value("#{jobParameters['fileName']}") String fileName){
/*
while bean is initialized fileName is empty and FlatFileItemWriter requries filename, then it throws Path must not be null exeption
*/
pretaFileName = fileName;
FlatFileItemWriter<EntityObject> csvFileWriter = new FlatFileItemWriter<>();
String exportFileHeader = "column1,column2,column3";
StringHeaderWriter headerWriter = new StringHeaderWriter(exportFileHeader);
csvFileWriter.setHeaderCallback(headerWriter);
csvFileWriter.setShouldDeleteIfEmpty(true);
CustomDelimitedLineAggregator<EntityObject> lineAggregator = new CustomDelimitedLineAggregator<>();
BeanWrapperFieldExtractor<EntityObject> fieldExtractor = new BeanWrapperFieldExtractor<>();
fieldExtractor.setNames(new String[]{"column1", "column2", "column3"});
lineAggregator.setFieldExtractor(fieldExtractor);
csvFileWriter.setLineAggregator(lineAggregator);
csvFileWriter.setEncoding(encodingType);
csvFileWriter.setResource(new FileSystemResource(fileName));
return csvFileWriter;
}
```
Above method is called using joblauncher
``` JobParameters params = new JobParametersBuilder()
.addString("JobID", String.valueOf(System.currentTimeMillis()))
.addString("fileName", "sample_file.txt")
.toJobParameters();
JobExecution jobExecution =jobLauncher.run(job, params);
我试过@lazy注释,但当服务器启动时,它仍然会抛出这个异常。我使用的是多节点集群,当服务器在BATCH_STEP_EXECUTION表中启动时,它会为每个节点添加条目。当服务器第一次启动时,如何避免这个异常?
我在springboot application.properties中使用below属性默认禁用spring批处理,因为我正在触发并通过cron触发器传递参数。
spring.batch.job.enabled=false
我正在使用logback.xml实现SLF4J日志记录,但应用程序正在创建多个日志文件。我需要为一个日期创建一个单一的日志文件,所有的日志级别都在相同的日志文件中。 下面是我的logback.xml配置。
问题内容: 我想从Java程序执行批处理文件。 我正在使用以下命令。 但是问题是我想提供一个相对路径而不是绝对路径,以便我可以在任何组件上部署该Java项目。 项目的目录结构如下: 我想从“解析器”目录中的“ Main.java”文件中运行“ util”目录中的“ Server.bat”文件。 问题答案: 当Java运行时,您可以将Runtime.exec()与相对路径一起使用,相对方式是相对于当
我们有一个用Spring Boot编写的REST API。这个应用程序的一部分是每天运行的Spring批处理作业。我希望Spring批处理作业完成后,一个退出代码返回到启动应用程序的shell脚本,因此我在main方法中添加了。我才意识到这会导致整个Spring Boot应用程序退出,而这是我们不想要的。我正在寻找一种方法来执行Spring批处理作业,向调用它的shell脚本返回退出代码,并使Sp
我想创建从任务计划程序运行的批处理文件 要求: 少于30天的文件应从主文件夹移动到存档文件夹 然后应删除移动的存档文件 它应该存储所有日志条目 我已经编写了步骤脚本 步骤脚本 有人能告诉我如何使用上述两个命令创建日志文件吗。 日志文件应存储其移动的所有文件名
我无法在使用JPA的Spring启动应用程序中记录Spring批处理日志。这是属性文件配置(application.properties)。我想看看应用程序是否从日志中创建了Spring批处理表。 https://github.com/spring-projects/spring-batch/blob/master/spring-batch-core/src/main/resources/org/
我已经将spring batch admin与现有的spring web应用程序集成。我可以使用batch admin屏幕触发/控制作业,并使用Tomcat8进行部署。一切正常,但Spring管理批处理日志在控制台中触发,导致catalina。填写GB。日志样本如下: 我的log4j配置如下: 但我不断地得到日志。你能建议如何禁用/增加日志级别吗?提前谢谢。