클러스터 환경으로 옮겨 가고있는 독립 실행 형 환경에서 잘 작동하는 스프링 구현의 석영을 사용하고 있습니다. 저는 Quartz를 조정하기 위해 JDBC 지원 작업 점포를 사용하고 있습니다. 내 인생에서 나는 그것의 데이터베이스 측면을 연결할 때 작동하지 않는 것 같습니다. 초기 설정을 수행하려면, 내가 지시 here을 따라 내 응용 프로그램 컨텍스트는 다음과 같습니다Quartz JDBC 작업 저장 작업이 실행되지 않는다
AutowiringBeanFactory
은 기본적으로 정확히 튜토리얼의 것과 동일
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="configLocation" value="classpath:quartz.properties"/>
<property name="dataSource" ref="dataSource"/>
<property name="transactionManager" ref="txManager"/>
<property name="schedulerName" value="ClusteredScheduler"/>
<property name="overwriteExistingJobs" value="true"/>
<property name="autoStartup" value="true"/>
<property name="applicationContextSchedulerContextKey" value="applicationContext"/>
<property name="jobFactory">
<bean class="com.project.scheduling.persistence.AutowiringSpringBeanJobFactory"/>
</property>
<property name="jobDetails">
<list>
<ref bean="shipNoticeJob" />
<ref bean="idleDeviceJob" />
<ref bean="distanceJob" />
<ref bean="deviceMaintenanceJob" />
</list>
</property>
<property name="triggers">
<list>
<ref bean="shipNoticeCronTrigger" />
<ref bean="idleDeviceTrigger" />
<ref bean="distanceTrigger" />
<ref bean="deviceMaintenanceTrigger" />
</list>
</property>
</bean>
.
내 quartz.properties
파일은 여기에 있습니다 :
# Needed to manage cluster instances
org.quartz.scheduler.instanceId=AUTO
org.quartz.scheduler.instanceName=ClusteredScheduler
#
org.quartz.jobStore.useProperties=true
org.quartz.jobStore.tablePrefix = QRTZ_
org.quartz.jobStore.isClustered = true
# Change this to match your DB vendor
#org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX
org.quartz.jobStore.driverDelegateClass = org.quartz.impl.jdbcjobstore.StdJDBCDelegate
org.quartz.scheduler.rmi.export = false
org.quartz.scheduler.rmi.proxy = false
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 10
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread = true
org.quartz.scheduler.wrapJobExecutionInUserTransaction=true
#org.quartz.threadPool.threadCount = 3
#org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
나는이 파일이 클래스 경로에 있는지 알고이 파일에 대한 변경 사항이 실제로 작업 여부를 불에 영향을 미칠 포함. 이 파일의 마지막 두 줄은 완벽하게 작동하는 "독립 실행 형 환경"에서 사용한 구성입니다. 또한 독립형 버전을 사용할 때 응용 프로그램 컨텍스트의 현재 내용이 작동합니다. (분명히 일부 속성은 RAM 작업 저장소가 아닌 데이터베이스 기반 작업 저장소에 적용된다는 점에서 의미가 없습니다.
quartz.properties
파일의 모든 줄을 마지막 두 줄 외에 주석 처리하면 모든 것이 예상대로 작동합니다. 그러나 현재 구현에서는 작업이 실행되지 않고 데이터베이스의 트리거가 실행되지 않습니다.
생각하십니까? 그 어떤 출력을 생성하지 않는 경우 로깅에 대한 질문 당
편집
, 나는 내가<category name="org.quartz">
<priority value="trace"/>
<appender-ref ref="file" />
어느 하나
생산했는데, 다음<logger name="org.quartz">
<level value="trace"/>
<appender-ref ref="file" />
및 추가 ANY 로깅 출력 ...
로깅에서'org.quartz'를 디버그 레벨로 올리면 발사되지 않는 작업과 관련된 메시지가 보입니까? –
@WillKeeling 위의 수정 사항을 참조하십시오. 나는 석영에 아무 것도 기록하지 못했습니다 ... 용의자입니다 ... –