배치 스케줄러 관련
- 작성자 :
- 박*철
- 작성일 :
- 2013-10-29 17:28:21
- 조회수 :
- 1,512
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
배치 스켸쥴링 관련하여 설정을 위해서 아래의 사이트를 참고하여 테스트 도중 에러가 발생합니다.
참고 URL: http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:fdl:scheduling
에러는
gnoring bean class loading failure for bean 'jobDetailBean'
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quartz.JobDetailBean] for bean with name 'jobDetailBean' defined in file [D:\DEV2\workspace\EGovTemplate001\target\classes\egovframework\spring\context-aspect.xml]: problem with class file or dependent class; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as super class
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1265)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576)
자세한 내용은 첨부파일로 에러/설정파일/소스 드립니다.
매번 친절한 답변 감사드립니다.
p.s: 검색을 좀 해보니 스프링 버젼을 올려야 된다는거 같은데.. 메이븐으로 적용해봐도 되질 않습니다.
자문 자답이 되어버렸네요..
라이브러리에 호환성 문제로
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
변경하고 나니까 잘 됩니다.
샘플에서
<bean id="sayHelloService" class="com.quartz.service.SayHelloService">
<property name="name" value="FactoryBean"/>
</bean>
배치 서비스시에
sayHelloService 를 호출하여 파라미터로 name=FactoryBean을 집어넣는데..
파라미터를 좀 더 다양한 방법으로 넣는 방법은 무엇이 있을까요?
예를 들면 특정 파일을 읽는다든지.. 뭐 이런것들이요.
참고 URL: http://www.egovframe.org/wiki/doku.php?id=egovframework:rte:fdl:scheduling
에러는
gnoring bean class loading failure for bean 'jobDetailBean'
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.scheduling.quartz.JobDetailBean] for bean with name 'jobDetailBean' defined in file [D:\DEV2\workspace\EGovTemplate001\target\classes\egovframework\spring\context-aspect.xml]: problem with class file or dependent class; nested exception is java.lang.IncompatibleClassChangeError: class org.springframework.scheduling.quartz.JobDetailBean has interface org.quartz.JobDetail as super class
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1265)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576)
자세한 내용은 첨부파일로 에러/설정파일/소스 드립니다.
매번 친절한 답변 감사드립니다.
p.s: 검색을 좀 해보니 스프링 버젼을 올려야 된다는거 같은데.. 메이븐으로 적용해봐도 되질 않습니다.
자문 자답이 되어버렸네요..
라이브러리에 호환성 문제로
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>1.8.5</version>
</dependency>
변경하고 나니까 잘 됩니다.
샘플에서
<bean id="sayHelloService" class="com.quartz.service.SayHelloService">
<property name="name" value="FactoryBean"/>
</bean>
배치 서비스시에
sayHelloService 를 호출하여 파라미터로 name=FactoryBean을 집어넣는데..
파라미터를 좀 더 다양한 방법으로 넣는 방법은 무엇이 있을까요?
예를 들면 특정 파일을 읽는다든지.. 뭐 이런것들이요.
A
안녕하세요. 박승철님.
말씀하신 것 처럼 Spring쪽과 quartz의 버전 차이의 문제였던 것 같습니다.
추가적으로 문의해 주신 부분은 특정 파일을 읽는 것과 같은 처리는 service bean 자체에서 처리하시거나, Quartz가 아닌 Spring Batch를 이용하셔야 합니다.
배치는 사용자 인터페이스가 없이 처리되는 경우라 대부분 경우는 bean 자체에서 특정 정보(날짜, 파일 읽기, DB 정보 등)를 직접 처리하실 수 있습니다.
Spring Batch의 경우는 input 부분을 file, DB 등으로 다양하게 지정하셔서 활용할 수 있으나 일반적으로 Quartz를 사용한 방식보다는 복잡하게 구성됩니다.
Spring Batch 부분은 실행환경 내에 있는 배치처리 layer를 참조하시면 되실 것 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea2.6
(하단 배치처리 부분 참조)
그럼, 즐거운 하루되십시오.
감사합니다.
말씀하신 것 처럼 Spring쪽과 quartz의 버전 차이의 문제였던 것 같습니다.
추가적으로 문의해 주신 부분은 특정 파일을 읽는 것과 같은 처리는 service bean 자체에서 처리하시거나, Quartz가 아닌 Spring Batch를 이용하셔야 합니다.
배치는 사용자 인터페이스가 없이 처리되는 경우라 대부분 경우는 bean 자체에서 특정 정보(날짜, 파일 읽기, DB 정보 등)를 직접 처리하실 수 있습니다.
Spring Batch의 경우는 input 부분을 file, DB 등으로 다양하게 지정하셔서 활용할 수 있으나 일반적으로 Quartz를 사용한 방식보다는 복잡하게 구성됩니다.
Spring Batch 부분은 실행환경 내에 있는 배치처리 layer를 참조하시면 되실 것 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:rtea2.6
(하단 배치처리 부분 참조)
그럼, 즐거운 하루되십시오.
감사합니다.