我正在使用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>