Spring batch --- DatabaseType not found for product name: [Informix Dynamic Server] -
i want implement spring batch spring boot , since using informix database i'm running following exception when spring boot app starts up.
configuration :
@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 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(); } exception
caused by: java.lang.illegalargumentexception: databasetype not found product name: [informix dynamic server] @ org.springframework.batch.support.databasetype.fromproductname(databasetype.java:79) @ org.springframework.batch.support.databasetype.frommetadata(databasetype.java:110) @ org.springframework.boot.autoconfigure.batch.batchdatabaseinitializer.getdatabasetype(batchdatabaseinitializer.java:71) @ org.springframework.boot.autoconfigure.batch.batchdatabaseinitializer.initialize(batchdatabaseinitializer.java:50) @ sun.reflect.nativemethodaccessorimpl.invoke0(native method) @ sun.reflect.nativemethodaccessorimpl.invoke(nativemethodaccessorimpl.java:62) @ sun.reflect.delegatingmethodaccessorimpl.invoke(delegatingmethodaccessorimpl.java:43) @ java.lang.reflect.method.invoke(method.java:497) @ org.springframework.beans.factory.annotation.initdestroyannotationbeanpostprocessor$lifecycleelement.invoke(initdestroyannotationbeanpostprocessor.java:349) @ org.springframework.beans.factory.annotation.initdestroyannotationbeanpostprocessor$lifecyclemetadata.invokeinitmethods(initdestroyannotationbeanpostprocessor.java:300) @ org.springframework.beans.factory.annotation.initdestroyannotationbeanpostprocessor.postprocessbeforeinitialization(initdestroyannotationbeanpostprocessor.java:133)
spring batch doesn't seem directly support informix.
from org.springframework.batch.support.databasetype :
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"); but, said here : http://forum.spring.io/forum/spring-projects/batch/61097-why-spring-batch-doesn-t-support-informix-database, seems can set database type oracle , support informix.
Comments
Post a Comment