2013-04-30 27 views
0

我有2个不同的触发器和2个不同的工作。 TimeLord1和TimeLord2是同时处理的两个不同的Java类,延迟相同,但是它们是不同的类。在Spring中使用Quartz创建多个触发器及其各自的作业

仅供参考,TimeLord类没有任何问题。

我得到这个异常:

堆栈跟踪

ERROR JobRunShell: Job DEFAULT.runScheduleJob1 threw an unhandled Exception: 
java.lang.NullPointerException 
    at service.quartz.RunScheduleJob.executeInternal(RunScheduleJob.java:17) 
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:199) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) 
15:56:17,736 [] ERROR JobRunShell: Job DEFAULT.runScheduleJob2 threw an unhandled Exception: 
java.lang.NullPointerException 
    at service.quartz.RunScheduleJob.executeInternal(RunScheduleJob.java:17) 
    at org.springframework.scheduling.quartz.QuartzJobBean.execute(QuartzJobBean.java:113) 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:199) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) 
15:56:17,738 [] ERROR ErrorLogger: Job (DEFAULT.runScheduleJob1 threw an exception. 
org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NullPointerException] 
    at org.quartz.core.JobRunShell.run(JobRunShell.java:210) 
    at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:549) 

代码

<bean name="runScheduleJob1" class="org.springframework.scheduling.quartz.JobDetailBean"> 
      <property name="jobClass" value="service.quartz.RunScheduleJob" /> 
      <property name="jobDataAsMap"> 
       <map> 
        <entry key="runScheduleTask1" value-ref="timeLord1" /> 
       </map> 
      </property> 
     </bean> 

    <bean name="runScheduleJob2" class="org.springframework.scheduling.quartz.JobDetailBean"> 
      <property name="jobClass" value="service.quartz.RunScheduleJob" /> 
      <property name="jobDataAsMap"> 
       <map> 
        <entry key="runScheduleTask2" value-ref="timeLord2" /> 
       </map> 
      </property> 
     </bean> 

<bean id="simpleTrigger1" 
       class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
     <property name="jobDetail" ref="runScheduleJob1" /> 
     <property name="repeatInterval" value="500" /> 
     <property name="startDelay" value="10" /> 
    </bean> 


<bean id="simpleTrigger2" 
       class="org.springframework.scheduling.quartz.SimpleTriggerBean"> 
     <property name="jobDetail" ref="runScheduleJob2" /> 
     <property name="repeatInterval" value="500" /> 
     <property name="startDelay" value="10" /> 
    </bean> 


<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="jobDetails"> 
      <list> 
       <ref bean="runScheduleJob" /> 
      </list> 
     </property> 

     <property name="triggers"> 
      <list> 
       <ref bean="simpleTrigger1" /> 
       <ref bean="simpleTrigger2" /> 
      </list> 
     </property> 
    </bean> 
+0

runScheduleJob定义在哪里? – 2013-04-30 20:28:14

回答

0

尝试取出这一部分:

<property name="jobDetails"> 
      <list> 
       <ref bean="runScheduleJob" /> 
      </list> 
     </property> 

您可以在触发器中定义jobDetails。

+0

我得到这个异常:'错误设置属性值;嵌套异常是org.springframework.beans.NotWritablePropertyException:Bean类的无效属性'jobDetails'[org.springframework.scheduling.quartz.SimpleTriggerBean]:Bean属性'jobDetails'不可写或具有无效的setter方法。你的意思是'jobDetail'?' – bouncingHippo 2013-05-01 13:28:50

相关问题