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" 값만 추가해줘도 모든 문제는 해결된다.
더 알아볼 내용이 있으면 미래의 나를 위해 계속 추가해야겠다.
'PROGRAM > JAVA / JSP' 카테고리의 다른 글
lombok @Data not working / getter setter 인식 불가 해결 (2) | 2018.12.03 |
---|---|
Spring 배치, 스케쥴러 사용하기 : Quartz, @Scheduled (0) | 2018.10.30 |
List<Map> 정렬방법 (0) | 2018.08.07 |
Maven 프로젝트 : offline 연결을 위한 설정 (0) | 2017.10.12 |
eclipse에서 폴더가 패키지 구조로 표시될 때 (0) | 2017.09.25 |