【发布时间】:2015-01-26 16:42:15
【问题描述】:
我有一个 ApplicationScoped bean,我想在石英作业实现中访问它。 该 bean 通过运行时保存一个哈希图,我想在作业运行时填充哈希图。 但是,FacesContext 与作业内部的上下文无关。 我可以访问 ServletContext。是否可以通过 ServletContext 访问我的 bean?
我的访问 Servlet 上下文的代码:
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
SchedulerContext schedulerContext=null;
try {
schedulerContext=context.getScheduler().getContext();
}
catch (SchedulerException e) {
e.printStackTrace();
}
ServletContext servletContext=(ServletContext)schedulerContext.get("QuartzServletContext");
BOCacheM bOCacheM = (BOCacheM) servletContext.getAttribute("bOCacheM");
}
我的 QuartzServletContext 在 web.xml 中定义为:
<context-param>
<param-name>quartz:scheduler-context-servlet-context-key</param-name>
<param-value>QuartzServletContext</param-value>
</context-param>
<listener>
<listener-class>
org.quartz.ee.servlet.QuartzInitializerListener
</listener-class>
</listener>
【问题讨论】:
-
Quartz Scheduler 和那些东西使用它们自己的线程来运行。看起来像一些设计问题。答案完全取决于问题中不可见的功能要求。
标签: jsf quartz-scheduler