2009-07-27 7 views
13

मैं स्प्रिंग फ्रेमवर्क का उपयोग कर ओरेकल डीबी पर क्वार्ट्ज जॉब स्टोर को कार्यान्वित कर रहा हूं। मेरा ApplicationContext.xmlस्प्रिंग फ्रेमवर्क के साथ क्वार्ट्ज जॉबस्टोर

<bean id="driverJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="BatchFileCollector" /> 
</bean> 

<bean id="ranchTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
    <property name="jobDetail" ref="driverJob" /> 
    <property name="startDelay" value="2000" /> 
    <property name="repeatInterval" value="10000" /> 
</bean> 

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
     <list> 
      <ref bean="ranchTrigger" /> 
     </list> 
    </property> 
    <property name="dataSource"> 
     <ref bean="dataSource.TEXAN"/> 
    </property> 
    <property name="applicationContextSchedulerContextKey"> 
     <value>applicationContext</value> 
    </property> 
    <property name="autoStartup"> 
     <value>true</value> 
    </property> 
    <property name="configLocation" value="classpath:quartz.properties"/> 
</bean> 

यह कॉन्फ़िगरेशन मुझे नीचे दी गई त्रुटि देता है।

कारण: org.quartz.JobPersistenceException: ट्रिगर को स्टोर नहीं किया जा सका: ट्रिगर द्वारा संदर्भित नौकरी (DEFAULT.driverJob) मौजूद नहीं है।

मैं स्प्रिंग फ्रेमवर्क 2.5.6 का उपयोग कर रहा [नौकरी (DEFAULT.driverJob) ट्रिगर द्वारा संदर्भित मौजूद नहीं है देखें नेस्टेड अपवाद: org.quartz.JobPersistenceException।]। क्या मुझे अपने क्वार्ट्ज संस्करण को अपग्रेड करना है? मुझे समस्या नहीं मिल रही है।

आपकी मदद के लिए धन्यवाद।

+0

पूर्ण स्टैक ट्रेस पोस्ट करें, बस अपवाद पाठ नहीं – skaffman

+0

आप नीचे दिए गए लिंक के माध्यम से http://jksnu.blogspot.com/2011/03/ जा सकते हैं क्वार्ट्ज-फ्रेमवर्क-कार्यान्वयन-with.html –

उत्तर

13

आपका SchedulerFactoryBean "driverJob" पंजीकृत भी होना आवश्यक है। अपने ट्रिगर के साथ, जॉब विवरण की एक सूची जोड़ें।

<bean id="job.statistics.DailyQPSValidationJobTrigger" class="org.quartz.CronTrigger"> 
    <property name="name" value="DailyQPSValidationTrigger" /> 
    <property name="jobName" value="DailyQPSValidation" /> 
    <property name="jobGroup" value="Statistics" /> 
    <property name="volatility" value="false" /> 
    <!-- Each day, 4 o'clock AM --> 
    <property name="cronExpression" value="0 0 4 * * ?" /> 
</bean> 

<!-- Scheduler --> 

<bean id="job.SchedulerProperties" class="somecompany.someproduct.util.spring.PropertiesFactoryBean" 
    scope="singleton"> 
    <property name="source"> 
     <props> 
      <prop key="org.quartz.scheduler.instanceId">AUTO</prop> 
      <prop key="org.quartz.scheduler.instanceName">JobCluster</prop> 
      <prop key="org.quartz.jobStore.class">org.quartz.impl.jdbcjobstore.JobStoreTX</prop> 
      <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.StdJDBCDelegate</prop> 
      <prop key="org.quartz.jobStore.isClustered">true</prop> 
      <prop key="org.quartz.jobStore.useProperties">false</prop> 
     </props> 
    </property> 
</bean> 

<bean id="job.Scheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" scope="singleton" 
    lazy-init="false"> 
    <property name="startupDelay" value="30" /> 
    <property name="waitForJobsToCompleteOnShutdown" value="true" /> 
    <property name="dataSource" ref="jdbc.DataSource" /> 
    <property name="quartzProperties" ref="job.SchedulerProperties" /> 
    <property name="jobDetails"> 
     <list> 
      <ref bean="job.statistics.DailyQPSValidationJobDetail" /> 
     </list> 
    </property> 
    <property name="triggers"> 
     <list> 
      <ref bean="job.statistics.DailyQPSValidationJobTrigger" /> 
     </list> 
    </property> 
    <property name="schedulerListeners"> 
     <list> 
      <bean class="somecompany.someproduct.job.SchedulerErrorListener"> 
       <property name="monitoringService" ref="monitoring.MonitoringService" /> 
      </bean> 
     </list> 
    </property> 
    <property name="globalJobListeners"> 
     <list> 
      <bean class="somecompany.someproduct.job.JobErrorListener"> 
       <property name="name" value="JobErrorListener" /> 
       <property name="monitoringService" ref="monitoring.MonitoringService" /> 
      </bean> 
     </list> 
    </property> 
</bean> 
+0

मुझे लगता है कि DriverJob को SchedulerFactoryBean में जोड़ने की कोई आवश्यकता नहीं है क्योंकि ranchTrigger बीन में driverJob शामिल है। क्या आप स्प्रिंग फ्रेमवर्क का उपयोग कर क्वार्ट्ज जॉबस्टोर के लिए नमूना कॉन्फ़िगरेशन भेज सकते हैं? – firstthumb

+0

क्या आपको लगता है या आपने कोशिश की है? बस शेड्यूलर में नौकरी जोड़ें। और अपने जॉब क्लास "बैचफाइलकोलेक्टर" की जांच करें। क्या यह वास्तव में डिफ़ॉल्ट पैकेज का हिस्सा है? और आपको नौकरी को एक नाम और एक समूह देना चाहिए और इसे ट्रिगर से संदर्भित करना चाहिए ... मैं एक उदाहरण जोड़ूंगा। – cafebabe

0

मुझे यकीन है कि अगर यह काम करेगा नहीं कर रहा हूँ, लेकिन आप का उपयोग कर की कोशिश कर सकते:

<bean id="driverJob" .../> 

के बजाय:

<bean name="driverJob" .../> 
+0

यह काम नहीं करता है। बैचफाइलकोलेक्टर क्लास org.springframework.scheduling.quartz.QuartzJobBean बढ़ाता है। – firstthumb

3

मैं क्वार्ट्ज 1.5.2 और स्प्रिंग 3.0.4 के साथ एक ही समस्या है। समस्या यह है कि जॉबस्टोर सपोर्ट क्लास नौकरी के लिए एक विदेशी कुंजी के साथ एक क्रॉन ट्रिगर को स्टोर करने का प्रयास करता है (डीबी से नौकरी लोड करने का प्रयास करता है), जो अभी तक जारी नहीं है।

क्वार्ट्ज 1.6.1, 1.7.2 संस्करणों के साथ एक ही समस्या।

<bean id="quartzScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" 
     depends-on="quartzDatabaseCreator"> 
    <property name="autoStartup"> 
     <value>true</value> 
    </property> 
    <property name="dataSource"> 
     <ref bean="dataSource"/> 
    </property> 
    <property name="quartzProperties"> 
     <props> 
      <prop key="org.quartz.jobStore.selectWithLockSQL">SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ? 
      </prop> 
      <prop key="org.quartz.jobStore.driverDelegateClass">org.quartz.impl.jdbcjobstore.${qrtz.delegateClass} 
      </prop> 
     </props> 
    </property> 
    <property name="triggers"> 
     <list> 
      <ref bean="cronTrigger"/> 
     </list> 
    </property> 
    <property name="schedulerContextAsMap"> 
     <map> 
      <entry key="sygnoServerHelper"><ref bean="sygnoServerHelper"/></entry> 
      <entry key="requestDAO"><ref bean="requestDAO"/></entry> 
      <entry key="alairoCache"><ref bean="alairoCache"/></entry> 
     </map> 
    </property> 
</bean> 

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="checkGracePeriodJob" /> 
    <!--         # s m h dom mon dow [y] --> 
    <property name="cronExpression" value="0 0/5 * * * ?" /> 
</bean> 

<bean id="checkGracePeriodJob" class="org.springframework.scheduling.quartz.JobDetailBean"> 
    <property name="jobClass" value="com.synergon.sygnoserver.CheckGracePeriodJob"/> 
</bean> 

+1

और इस समस्या का समाधान क्या है? – Abdull