0

我们如何在 Spring Batch 中正确配置 Sybase 数据源?

目前我正在使用 JdbcPagingItemReader 读取数据库并使用 Tomcat DBCP 创建数据源。但是,批处理运行时会出现以下错误。

Caused by: java.lang.IllegalArgumentException: DatabaseType not found for product name: [Sybase IQ]
at org.springframework.batch.support.DatabaseType.fromProductName(DatabaseType.java:77)
at org.springframework.batch.support.DatabaseType.fromMetaData(DatabaseType.java:108)
at org.springframework.batch.core.repository.support.JobRepositoryFactoryBean.afterPropertiesSet(JobRepositoryFactoryBean.java:162)
at org.springframework.batch.core.configuration.annotation.DefaultBatchConfigurer.createJobRepository(DefaultBatchConfigurer.java:82)
at org.springframework.batch.core.configuration.annotation.DefaultBatchConfigurer.initialize(DefaultBatchConfigurer.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:344)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:295)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
... 13 more

作为参考,我目前是用于连接的 JConn4-7.0 jar。尽管 [为 Oracle 更改了池属性],但连接到 Oracle 数据库没有问题。

任何见解都会有所帮助。

为了清晰/可读性,请随时编辑问题。

4

1 回答 1

3

您遇到的错误可能是由于未在 JobRepositoryFactoryBean 上显式配置数据库类型。如果没有设置,我们会尝试从 JDBC 元数据中确定它是什么类型。要显式指定 Sybase 作为作业存储库的数据库类型,请通过 JobRepositoryFactoryBean 上的 databaseType 属性对其进行配置,如下所示:

<bean id="jobRepository"
    class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="transactionManager" ref="transactionManager" />
    <property name="databaseType" value="SYBASE" />
</bean>

您可以在此处的 Spring Batch 文档中阅读有关此功能的更多信息:http: //docs.spring.io/spring-batch/reference/html/configureJob.html#nonStandardDatabaseTypesInRepository

于 2013-12-03T02:39:16.810 回答