Как получить доступ к init-параметрам другого сервлета или контекстных параметров контекста внутри кварцевых заданий?

Я определил свою работу кварца с конфигурацией заданий XML, как в примере 2 здесь

http://www.mkyong.com/java/example-to-run-multiple-jobs-in-quartz/

У меня есть другие сервлеты, у которых есть некоторые init-параметры, и у моего веб-приложения также есть некоторые context-params.

Как мне получить доступ к этим параметрам внутри моей работы, которая реализует класс Job?

2 ответа

Решение

1) Можно в основном получить доступ к контексту сервлета, как это

в web.xml

<context-param>
    <param-name>quartz:scheduler-context-servlet-context-key</param-name>
    <param-value>ServletContext</param-value>
</context-param>

в коде

    ServletContext MyServletContext = null;
    MyServletContext = (ServletContext) context.getScheduler().getContext().get("ServletContext");

2) А затем параметры другого сервлета, как это

ServletContext.getServletRegistration("MyServlet").getInitParameter("MyInitParam");

Я вижу несколько вариантов здесь.

Создайте объект-держатель, который будет просто содержать информацию, к которой вы хотите получить доступ в вашей работе.

public class ConfigHolder {
    static public Map importantData;
}

Затем вы бы инициализировали данные, используя servlet2 в его init метод.

Запланируйте работу с JobDataMap как это

JobDetail jd = new JobDetail("yourjob", Scheduler.DEFAULT_GROUP, JobClass.class);
jd.getJobDataMap().put("config", configObject); 
Другие вопросы по тегам