본문 바로가기
PROGRAM/JAVA / JSP

Spring 3.x + Quartz 연동 시 주의사항

by ojava 2018. 10. 29.
반응형

Spring 3.x + Quartz 연동 시 주의사항

 

 

프로젝트 설정이 개발의 반이라지만 기존 프로젝트 설정을 변경하는 건 그보다 더 큰 작업임을 종종 느낀다.

^_ㅠ 일하면서 중간중간 변경이 필요하므로 일정이 더 쫄리기 때문이지..

 

 

오늘은 Spring 3.x + Quartz 연동 시 주의사항에 대해 알아보자.

 

 

 

1) Quartz version은 1.8.6을 사용해라.

 

최신 버전의 jar 파일을 다운 받아서 (그마저도 2017년 4월이다) 사용하려 했더니

다 맞게 쓰고 maven update를 하고 프로젝트를 몇 번을 clean을 해도 안된다고 나오더니

그 이유가 있었더랬다.

 

Spring 3.x 버전에서는 Quartz 2.x 이상을 사용할 수 없다.

2.x 이전에 나온 버전 중 가장 최신의 jar 파일인 1.8.6을 대체적으로 많이 사용하는 듯 하다.

 

프레임워크 전체적인 버전업을 할 수 없다면 1.8.6을 쓰자.

참고로 아래 maven repository 링크를 걸어놨으니 바로 가서 다운 받으시길.

 

https://mvnrepository.com/artifact/org.quartz-scheduler/quartz

 

 

 

 

2) application*.xml 에 quartz 설정을 했다면 default-autowire 설정을 주의하라.

 

아 이 설정때문에 반나절을 날린 관계로 급 포스팅을 한다.

전에 quartz 설정을 했을 때는, 별도의 config 파일을 생성하였으나,

web.xml의 contextConfigLocation 설정을 건드리기 귀찮은 관계로 설정된 대로 했더니 대참사가 벌어졌다.

 

JobDetailBean, CronTrigger 선언 그리고 SchedulerFactoryBean 까지 모두 잘 세팅했는데

왜 계속 DB에서 있지도 않은 qrtz_locks 테이블을 찾으면서 내놓으라고 오류를 뱉어대는지... ㅠ_ㅠ

나는 DB 연결 안하려고 Quartz 설정하고 있는데 이게 어떤 이유인가 찾다보니, 기존 설정파일 맨 위쪽 beans 선언부에 default-autowire="byName" 설정이 되어 있었다.

 

 

 

 

 

이 설정으로 인해 SchedulerFactoryBean가 초기화 될 때 DB 설정이 주입되어

Quartz 수행과 관련한 데이터를 입력하려고 시도하는 듯 하다.

 

간단하게 autowire="no" 값만 추가해줘도 모든 문제는 해결된다.

 

 

 

 

 

더 알아볼 내용이 있으면 미래의 나를 위해 계속 추가해야겠다.

반응형