Rescheduling a CronTriggerBean dynamically with same job details in Spring

你说的曾经没有我的故事 提交于 2019-12-05 02:45:07

问题


My task is to generate the reports dynamically with the scheduled time specified by the user from the GUI.

I am using the following code in the application context of my application in spring to generate the report daily 6 A.M..

<bean name="scheduleRptJob" class="org.springframework.scheduling.quartz.JobDetailBean">
    <property name="jobClass" value="com.secant.qatool.report.scheduler.ScheduleCroneJob"/>
</bean>

<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
    <property name="jobDetail" ref="scheduleRptJob" />

<bean id="schedulerFactory"  class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
    <property name="triggers">
        <list>
            <ref bean="cronTrigger"/>
        </list>
    </property>
</bean>

I am changing the cron expression dynamically from the controller with the following code. But it is not working.

    String time[] = rptScheduleTime.split(":");

    String hours = time[0];
    String minutes = time[1];

    String croneExp = " 00 " + minutes + " " + hours + " * * ? ";

    log.debug("CRONE EXP :: " + croneExp);

    cronTrigger.clearAllTriggerListeners();

    // Setting the crown expression.
    cronTrigger.setCronExpression(croneExp);

    Trigger[] triggers = {cronTrigger};

    // Code to pause and start the cron trigger.
    schedulerFactory.stop();
    schedulerFactory.setTriggers(triggers);
    schedulerFactory.start();

Could someone please help me how to reschedule the same job with dynamic time.

Thanks,

-Anil Kumar.C


回答1:


there is a thread in the spring forum about this, and it seams they found a solution for your problem: http://forum.springsource.org/showthread.php?t=31736

but instead of manually change the cron expression in the file you could use the spring expression language to read it each time from your object holding the value.




回答2:


I have found this thread where they read a cron expr from DB and then reschedule the job. You just wouldn't read it from DB, but pass it directly from GUI as you want.



来源:https://stackoverflow.com/questions/4778625/rescheduling-a-crontriggerbean-dynamically-with-same-job-details-in-spring

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!