проблемы с пакетом ApplicationContext и Spring

я работаю с пакетом Spring, я выполнил пакетное задание, настроенное с помощью файла xml, я также поместил всю конфигурацию Quartz в этот файл xml (триггер, schedulerFactoryBean и jobDetail); это проект Java, и я пытаюсь загрузить контекст приложения как отдельный в основном классе; насколько говорится в документации, это должно заставить Quartz начать работать и делает это, проблема в том, что когда задание запускается с триггером и вызывает службу, похоже, что все компоненты Autowired не были загружены, поэтому дает мне NullpointerException… это код, который вызывает задание после срабатывания триггера, и когда создается JobParametersBuilder, происходит сбой, хотя Quartz все еще работает…

может кто-нибудь помочь мне с этим?

//класс, вызываемый заданием

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

это компоненты Quartz в файле xml:

<!-- 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>

person Rodrigo Medina    schedule 19.09.2011    source источник


Ответы (1)


Попробуйте org.springframework.scheduling.quartz.JobDetailBean вместе с jobDataAsMap для класса задания DI

Ex:

http://docs.spring.io/spring/docs/3.0.x/spring-framework-reference/html/scheduling.html#scheduling-quartz-jobdetail

person blob    schedule 25.09.2011