第一次接触spring batch(2.2.7.RELEASE),项目涉及到了多个数据库,其中一个数据库没有问题。另一个数据库出现了DataAccessResourceFailureException异常。
下面是配置:
数据库property文件配置:
db.type=oracle
jdbc.alias=DBPool
jdbc.host=127.0.0.1
jdbc.driverClassName=oracle.jdbc.driver.OracleDriver
jdbc.url=jdbc:oracle:thin:@127.0.0.1:1521:orcl
jdbc.username=root
jdbc.password=root
jdbc.testOnBorrow=true
jdbc.validationQuery=select * from dual
jdbc.initialSize=15
jdbc.maxActive=30
jdbc.maxIdle=2
jdbc.minIdle=0
spring配置dataSource:
<beans profile="default">
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}" />
<property name="url" value="${jdbc.url}" />
<property name="username" value="${jdbc.username}" />
<property name="password" value="${jdbc.password}" />
<property name="initialSize" value="${jdbc.initialSize}" />
<property name="maxActive" value="${jdbc.maxActive}" />
<property name="maxIdle" value="${jdbc.maxIdle}" />
<property name="minIdle" value="${jdbc.minIdle}" />
<property name="testOnBorrow" value="${jdbc.testOnBorrow}" />
<property name="validationQuery" value="${jdbc.validationQuery}" />
</bean>
</beans>
触发器和job的配置就不贴了
刚开始是以为oracle的sql语句写错了,
debug发现问题是在spring-batch 插入 BATCH_JOB 表就出现了问题。也就是spring-batch的读表配置有问题。
问题出现在 jobRepository bean中,将databaseType去掉即可支持多个数据源。
<bean id="jobRepository" class="org.springframework.batch.core.repository.support.JobRepositoryFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="transactionManager" ref="txManager" />
<!-- 支持多数据库 <property name="databaseType" value="Oracle" /> -->
</bean>
找bug花了很久,记录下。