我想用Spring boot实现Spring批处理,因为我们使用的是informix数据库,所以当我的Spring boot应用程序启动时,我遇到了以下异常。
配置:
@Bean
public DataSource dataSource() throws SQLException {
BasicDataSource dataSource = new BasicDataSource();
dataSource.setDriverClassName(dataSourceProperties.getDriverClassName());
dataSource.setUrl(dataSourceProperties.getDbUrl());
dataSource.setUsername(dataSourceProperties.getDbUsername());
dataSource.setPassword(dataSourceProperties.getDbPassword())
return dataSource;
}
@Bean
public DataSourceTransactionManager dataSourceTransactionManager(DataSource dataSource){
DataSourceTransactionManager manager=new DataSourceTransactionManager(dataSource);
return manager;
}
@Bean
public JobRepositoryFactoryBean jobRepositoryFactoryBean( DataSourceTransactionManager txManager,DataSource dataSource ) throws Exception{
JobRepositoryFactoryBean job=new JobRepositoryFactoryBean();
job.setDataSource(dataSource);
job.setDatabaseType("oracle");
job.setTransactionManager(txManager);
job.afterPropertiesSet();
return job;
}
@Bean
public ItemReader<Person> reader() {
FlatFileItemReader<Person> reader = new FlatFileItemReader<Person>();
reader.setResource(new ClassPathResource("sample-data.csv"));
reader.setLineMapper(new DefaultLineMapper<Person>() {{
setLineTokenizer(new DelimitedLineTokenizer() {{
setNames(new String[] { "firstName", "lastName" });
}});
setFieldSetMapper(new BeanWrapperFieldSetMapper<Person>() {{
setTargetType(Person.class);
}});
}});
return reader;
}
@Bean
public ItemProcessor<Person, Person> processor() {
return new PersonItemProcessor();
}
@Bean
public ItemWriter<Person> writer(DataSource dataSource) {
JdbcBatchItemWriter<Person> writer = new JdbcBatchItemWriter<Person>();
writer.setItemSqlParameterSourceProvider(new BeanPropertyItemSqlParameterSourceProvider<Person>());
writer.setSql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)");
writer.setDataSource(dataSource);
writer.afterPropertiesSet();
return writer;
}
@Bean
public Job importUserJob(JobBuilderFactory jobs, Step s1, JobExecutionListener listener,JobRepositoryFactoryBean jobRepositoryFactoryBean) throws Exception {
return jobs.get("importUserJob")
.repository(jobRepositoryFactoryBean.getObject())
.incrementer(new RunIdIncrementer())
.listener(listener)
.flow(s1)
.end()
.build();
}
@Bean
public Step step1(StepBuilderFactory stepBuilderFactory, ItemReader<Person> reader,
ItemWriter<Person> writer, ItemProcessor<Person, Person> processor) {
return stepBuilderFactory.get("step1")
.<Person, Person> chunk(10)
.reader(reader)
.processor(processor)
.writer(writer)
.build();
}
例外
原因:java。lang.IllegalArgumentException:在组织中找不到产品名称:[Informix动态服务器]的DatabaseType。springframework。一批支持数据库类型。位于org的fromProductName(DatabaseType.java:79)。springframework。一批支持数据库类型。org上的fromMetaData(DatabaseType.java:110)。springframework。靴子自动配置。一批BatchDatabaseInitializer。位于org的getDatabaseType(BatchDatabaseInitializer.java:71)。springframework。靴子自动配置。一批BatchDatabaseInitializer。在sun上初始化(BatchDatabaseInitializer.java:50)。反映NativeMethodAccessorImpl。在sun调用0(本机方法)。反映NativeMethodAccessorImpl。在sun上调用(NativeMethodAccessorImpl.java:62)。反映DelegatingMethodAccessorImpl。在java上调用(DelegatingMethodAccessorImpl.java:43)。lang.reflect。方法在org调用(Method.java:497)。springframework。豆。工厂注释。InitDestroyAnnotationBeanPostProcessor$LifecycleElement。在组织中调用(InitDestroyAnnotationBeanPostProcessor.java:349)。springframework。豆。工厂注释。InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata。org上的invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:300)。springframework。豆。工厂注释。InitDestroyAnnotationBeanPostProcessor。初始化前的后处理(InitDestroyAnnotationBeanPostProcessor.java:133)
Spring批处理似乎并不直接支持Informix。
从org.springframework.batch.support.数据库类型
:
DERBY("Apache Derby"),
DB2("DB2"),
DB2ZOS("DB2ZOS"),
HSQL("HSQL Database Engine"),
SQLSERVER("Microsoft SQL Server"),
MYSQL("MySQL"),
ORACLE("Oracle"),
POSTGRES("PostgreSQL"),
SYBASE("Sybase"), H2("H2");
但是,正如这里所说:http://forum.spring.io/forum/spring-projects/batch/61097-why-spring-batch-doesn-t-support-informix-database,您似乎可以将数据库类型设置为Oracle,它将支持Informix。
运行应用程序时,我发现以下错误。 我的应用程序文件 mybatchConfig文件 线聚合器代码 模型文件代码 有人能告诉我如何摆脱这个错误吗,我做了很多尝试,但都无法传递错误,我是spring batch的新手,如果你能发布工作代码,那将非常有帮助,因为我在stackoverflow中看到了其他解决方案,但由于信息不完整,这些解决方案没有帮助。
原因:java.lang.IllegalArgumentException:未找到产品名称[Informix Dynamic Server]的DatabaseType.FromProductName(DatabaseType.java:79)的Org.SpringFramework.Botch.Support.DatabaseType.FromMetadata(DatabaseType.java:
在尝试设置Spring Boot-Spring批处理项目时,我遇到了一个错误,说明: 完整堆栈跟踪如下: 我的属性设置如下: 你知道为什么会这样吗?
在尝试设置Spring Boot-Spring批处理项目时,我遇到了一个错误,说明: 我已经检查了spring batch支持的数据库,但Tibero不在列表中。 有没有其他方法可以让Tibero DB。。。 请参阅以下错误日志。
context.xml 感谢Sh AntiBhushan
我正在编写Spring批的Spring Boot应用程序,其中ItemReader从Oracle数据库读取数据并将数据写入postgres sql,但我得到了以下错误 我不想创建spring批处理元数据表,我的应用程序不需要监视作业,请就此向我提出建议。提前谢谢!!