본문 바로가기

개발하면서

Spring Boot Quartz There is no DataSource named 'xxxxxDataSource'

반응형

 

Spring Boot Quartz 를 사용하여 Job Store를 특정 Data Base로 지정하여 사용 하거나

Spring Boot 의 기본  DataSource ("spring.datasoure.url =" )를 사용하지 않고

별도로 지정하여서 사용을 할 경우

 

Failed to instantiate [org.quartz.Scheduler]: Factory method 'schedulerFactoryBean' threw exception; nested exception is org.quartz.JobPersistenceException: Failed to obtain DB connection from data source 'xxxxDataSource': java.sql.SQLException: There is no DataSource named 'xxxxDataSource'

See nested exception: java.sql.SQLException: There is no DataSource named 'xxxxxDataSource'

와 같은 에러가 발생 한다.

 

 

소스를 받아서 디버깅을 해 보면

이것은 DataSource의 명칭이 불일치 하여 발생한 에러 이다.

 

 

 

"quartz.properties" 파일의 설정을 아래와 같이 조정하기 바란다.

 

[그림] quzrtz.properties 설정

위의 그림과 같이 "org.quzrtz.dataSource"의 값과  "org.quzrtz.data." 하위 Properties 이름이 일치하여야 한다.

( "org.quzrtz.dataSource" 는 Spring Boot에서 생성되는 Java Data Source Instance 명이 아님을 알수 있다 )

 

 

# Quartz Job Store
org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate
org.quartz.jobStore.dataSource = quartzDataSource
org.quartz.jobStore.misfireThreshold=60000
org.quartz.jobStore.tablePrefix=QRTZ_
org.quartz.jobStore.isClustered=false

#Quartz Data Source
org.quartz.dataSource.quartzDataSource.URL=jdbc:postgresql://localhost:5432/yacesbdb
org.quartz.dataSource.quartzDataSource.driver=org.postgresql.Driver
org.quartz.dataSource.quartzDataSource.user=auser
org.quartz.dataSource.quartzDataSource.password=auserpass!
org.quartz.dataSource.quartzDataSource.provider=hikaricp

 

반응형