Как сохранить переменные экземпляра, переданные заданию Quartz, после перезапуска веб-сервера?

Я использую Quartz scheduler в веб-приложении java.


Мой вопрос-это расширение для передачи переменных экземпляра в задание Quartz

Я следовал принятому ответу в вышеупомянутом сообщении и мог передать переменную экземпляра в свою работу quartz. Но после перезапуска веб-сервера переменная переданного экземпляра не сохраняется (т. е. она равна null)

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» даже после перезапуска веб-сервера?

Заранее большое спасибо.

1 ответ

  1. Вы можете добавить a ServletContextListenerв свой веб-проект ,и наcontextInitialized(), вы можете поместить externalInstanceSchedulerContextв. Таким образом, он будет загружаться при каждом перезапуске сервера.