如何在 quartz 作业中访问其他 servlet 的初始化参数或上下文上下文参数?

How to acces other servlet's init-parameters or context's contex-parameters inside quartz jobs?

我已经使用示例 2 中的 XML 作业配置定义了我的 quartz 作业

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

我有其他 servlet 有一些初始化参数,我的网络应用程序也有一些上下文参数。

如何在实现作业 class 的作业中访问这些参数?

我在这里看到了几个选项。

创建一个 holder 对象,它只包含您要在工作中访问的信息。

public class ConfigHolder {
    static public Map importantData;
}

然后您将在其 init 方法中使用 servlet2 初始化数据。

像这样使用 JobDataMap 安排作业[=​​14=]

JobDetail jd = new JobDetail("yourjob", Scheduler.DEFAULT_GROUP, JobClass.class);
jd.getJobDataMap().put("config", configObject); 

1) 基本上可以像这样访问 servlet 的上下文

在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) 然后另一个servlet的参数是这样的

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