如何在webserver重启后保留传递给Quartz作业的实例变量?

时间:2016-05-26 09:26:43

标签: java spring java-ee quartz-scheduler

我在java web应用程序中使用Quartz调度程序 我的问题是How to pass instance variables into Quartz job

的扩展

我按照上面帖子中的接受回答&可以将实例变量传递给我的石英作业。但是在重新启动Web服务器之后,传递的实例变量不会被保留(即,它为空)

public class SimpleJob implements Job {
    @Override
    public void execute(JobExecutionContext context)
            throws JobExecutionException {
        SchedulerContext schedulerContext = null;
        try {
            schedulerContext = context.getScheduler().getContext();
        } catch (SchedulerException e1) {
            e1.printStackTrace();
        }
        ExternalInstance externalInstance =
            (ExternalInstance) schedulerContext.get("ExternalInstance");

        System.out.println(externalInstance); //Will print "null" after web server restart

        float avg = externalInstance.calculateAvg();
    }
}

我如何保留" ExternalInstance"甚至在Web服务器重启后?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

您可以在您的网络项目中添加ServletContextListener,在contextInitialized()上,您可以将externalInstance添加到SchedulerContext。这样,每次服务器重新启动时都会加载它。