博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
上下文ac获取为null,SpringContextUtil配置位置,以及各配置xml的加载顺序有讲究...
阅读量:6606 次
发布时间:2019-06-24

本文共 1678 字,大约阅读时间需要 5 分钟。

发现一个有趣的现象,一般job都会在执行前去初始化一次ac,而任务监视器SupervisorQueueJob不会,因此启动时初始化ac为null,SupervisorQueueJob会始终无法获取上下文,也即其所需的bean。使得队列任务得不到执行。

import org.quartz.JobExecutionContext;import org.springframework.beans.factory.annotation.Value;import org.springframework.scheduling.annotation.Scheduled;import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;import org.springframework.stereotype.Service;@SuppressWarnings("serial")@Service("supervisorQueueJob")public class SupervisorQueueJob extends AbstractJob {          @Value("${quartz.job.autoStartup}")    protected String                 jobStart;            protected ThreadPoolTaskExecutor jobThreadPoolTaskExecutor;        @Override    protected void doExecute(JobExecutionContext context) {                       }        @Override    protected void afterExecute(JobExecutionContext context) {               }        @Override    protected void beforeExecute(JobExecutionContext context) {               }            @Scheduled(cron = "*/10 * * * * ?")    public void triggerSupervisorTask() {            if (Boolean.parseBoolean(jobStart)) {            LOGGER.info("监控线程执行一次" + System.currentTimeMillis());            jobThreadPoolTaskExecutor = (ThreadPoolTaskExecutor) ac.getBean("jobThreadPoolTaskExecutor");            jobThreadPoolTaskExecutor.submit((QueueSupervisorTask) SpringContextUtil.getBean("queueSupervisorTask"));        }    }}

原因:

<bean class="com.wind.buy.os.manager.utils.SpringContextUtil" />加载不能在SupervisorQueueJob 初始化之后(这个不言而喻)。

还有若是需要在Controller中手动触发定时任务,则对Controller包的扫描必须也在SupervisorQueueJob 之后,一般放在dispatch-servlet.xml中。

加载顺序可以在配置文件web.xml中指定。

 

转载于:https://www.cnblogs.com/qcxdoit/p/9072502.html

你可能感兴趣的文章
bzoj 1070: [SCOI2007]修车
查看>>
乱码发生的原因
查看>>
CMD命令行基本命令
查看>>
Go语言的通道(2)-缓冲通道
查看>>
javascript 正则表达式邮箱验证
查看>>
poj1328
查看>>
response.write()跟ajax冲突的解决方案
查看>>
【编码】utf-8
查看>>
两个viewport的故事(第二部分)
查看>>
display:table-cell的应用
查看>>
在micropython固件中增加自己的模块
查看>>
【数学】数论进阶-常见数论函数
查看>>
第一轮复习Servlet day04
查看>>
Babel下的ES6兼容性与规范
查看>>
【iOS开发】视图控制器加载和卸载时的几个函数
查看>>
python——装饰器
查看>>
事件的绑定
查看>>
.htaccess内容
查看>>
关于表单重复提交问题
查看>>
port 22: Connection refused
查看>>