2013-06-03 57 views
0

我的調度程序正在觸發,但我無法連接到數據庫。當我試圖使用測試用例來查詢數據庫時,它曾經工作過,所以我嘗試使用Quartz來實現它,但它給出了一個NullPointerException從Quartz作業查詢數據庫時出現空指針異常

public class JobScheduler extends QuartzJobBean { 
    @Autowired 
    ISourceService sourcedao; 
@Override 
    protected void executeInternal(JobExecutionContext arg0) 
      throws JobExecutionException { 
     Client client = new Client(); 
     client.setClientKey(300); 
     Source sourceobj = sourcedao.getSourceByClient(client); 
     String sourcetype = sourceobj.getSourceType(); 
     System.out.println(sourcetype); 
    } 
} 

我的應用程序的context.xml

<bean id="jobScheduler" class="org.springframework.scheduling.quartz.JobDetailBean"> 
     <property name="jobClass" value="com.dca.scheduling.JobScheduler" /> 
     <property name="jobDataAsMap"> 
      <map> 
       <entry key="timeout" value="5" /> 
      </map> 
     </property> 
    </bean> 

    <bean id="cronTriggerjobScheduler" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
     <property name="jobDetail" ref="jobScheduler" /> 
     <property name="cronExpression" value="0/15 0 * * * ?" /> 
    </bean> 
    <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
     <property name="jobDetails"> 
      <list> 
       <ref bean="jobScheduler" /> 
      </list> 
     </property> 
     <property name="triggers"> 
      <list> 
       <ref bean="cronTriggerjobScheduler" /> 
      </list> 
     </property> 
    </bean> 

    <bean id="jobClass" 
     class="com.dca.scheduling.JobScheduler"> 
    </bean> 

我查了很多例子,但沒有得到任何想法。

回答

1

JobScheduler也需要是Spring bean。你不顯示你如何註釋它。我會讓它成爲一個組件,看看你是否更好。

+0

我做到了作爲組成部分,但它沒有工作 – jos

+0

你做別的東西錯了,然後。 – duffymo

+0

有必要給@component註釋 – jos

0
在應用程序上下文

我添加了一個地圖

<bean id="jobScheduler" class="org.springframework.scheduling.quartz.JobDetailBean"> 
     <property name="jobClass" value="com.dca.scheduling.JobScheduler" /> 
     <property name="jobDataAsMap"> 
      <map> 
       <entry key ="DATA_MANAGER_MAP_KEY" value-ref="sourceDao"/>**i have added the bean id here** 
       <entry key="timeout" value="5" /> 
      </map> 
     </property> 
    </bean> 

,並在的jobscheduler類

sourceDao= (SourceDaoImpl)jobContext.getJobDetail().getJobDataMap().get("DATA_MANAGER_MAP_KEY"); 
相關問題