我正在使用Spring批處理,我完成了批處理作業,使用xml文件進行配置, 我還將所有Quartz配置放在該xml文件中(觸發器,schedulerFactoryBean和的JobDetail);這是一個java項目,我試圖加載應用程序上下文,作爲一個獨立的主類;就文檔說的,這應該使Quartz開始運行並且正在執行,問題在於當作業與觸發器一起運行並調用服務時,就像所有的Autowired bean尚未加載一樣,我是一個NullpointerException ... 這是在觸發器被觸發後作業調用的代碼,當創建JobParametersBuilder時,當一切都崩潰時,Quartz仍在運行,儘管...ApplicationContext和Spring批處理問題
有人可以幫助這個嗎?
//由作業稱爲類
public class MainJobClass {
private static Logger log = Logger.getLogger(MainJobClass.class);
@Autowired
private SimpleJobLauncher launcher;
@Autowired
private Job job;
public void executeJob(){
try{
log.info("***** Staring job......");
JobParametersBuilder builder = new JobParametersBuilder();
builder.addDate("date", new Date());
builder.addString("sendEmailJob", "Send email to approvers");
JobParameters parameters = builder.toJobParameters();
launcher.run(job, parameters);
}catch(Exception e){
log.error("Error on executing job"+e.fillInStackTrace());
}
}
public void setLauncher(SimpleJobLauncher launcher) {
this.launcher = launcher;
}
public void setJob(Job job) {
this.job = job;
}
簡單的主要方法調用應用程序上下文:
public static void main(String[] args){
ApplicationContext context = new ClassPathXmlApplicationContext("/com/ge/grt/email/grt_email_send.xml");
}
錯誤行:
INFO [DefaultQuartzScheduler_Worker-1] (MainJobClass.java:29) - ***** Staring job......
ERROR [DefaultQuartzScheduler_Worker-1] (MainJobClass.java:40) - Error on executing jobjava.lang.NullPointerException
這是對XML的石英豆file:
<!-- Scheudler Factory bean, the job will run when the context is loaded -->
<bean id="schedulerFactoryBean"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="beanTrigger"></ref>
</list>
</property>
</bean>
<!-- definition of the trigger -->
<!-- defining the execution date: (once every week on monday at 8:00 AM) -->
<bean id="beanTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail" ref="jobDetail" />
<property name="misfireInstructionName" value="MISFIRE_INSTRUCTION_FIRE_ONCE_NOW"/>
<!-- <property name="cronExpression" value="0 0 8 ? * MON" /> -->
<property name="cronExpression" value="0 0/1 * * * ?" />
</bean>
<!-- definiton of job detail bean -->
<bean id="jobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="mainJobClass" />
<property name="targetMethod" value="executeJob" />
<property name="concurrent" value="false"></property>
</bean>