我有一个QuartzJobBean,我想从Quartz作业访问我的Spring Application Context。我按照following blog上的说明进行操作。但是,以下代码无法正常工作:
private ApplicationContext getApplicationContext(JobExecutionContext context ) throws Exception {
System.err.println("check if variables are null - " + (context.getScheduler().getContext() == null));
System.err.flush();
ApplicationContext appCtx = (ApplicationContext)context.getScheduler().getContext().get(APPLICATION_CONTEXT_KEY);
if (appCtx == null) {
throw new JobExecutionException(
"No application context available in scheduler context for key /"" + APPLICATION_CONTEXT_KEY + "/"");
}
return appCtx;
}
在运行时打印以下消息:
我对我可能做错了什么感到有些困惑。是否有可能我的Spring应用程序上下文未命名" applicationContext"?如果是,那么Spring应用程序上下文的名称将在何处配置?关于为什么我的应用程序上下文为空的任何其他想法?检查变量是否为null - false
密钥的调度程序上下文中没有可用的应用程序上下文 "的applicationContext"
感谢。
答案 0 :(得分:0)
您可以尝试以下步骤。
代码看起来像。
public class ApplicationUtils implements ApplicationContextAware {
private static ApplicationContext ctx;
@Override
public void setApplicationContext(ApplicationContext appContext)
throws BeansException {
ctx = appContext;
}
public static ApplicationContext getApplicationContext() {
return ctx;
}
}