Как получить доступ к 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);