Spring的Quartz定时器同一时刻重复执行二次的问题解决
来源:互联网 发布:淘宝直播 知乎 编辑:程序博客网 时间:2024/05/29 02:26
最近用Spring的quartz定时器的时候,发现到时间后,任务总是重复执行两次,在tomcat或jboss下都如此。
打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候,重复启了两个quartz线程。
研究下来发现quartz确实会加载两次:
第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次。
第二次:Spring本身会加载applicationContext.xml一次。
而我的quartz配置就是写在applicationContext.xml文件里的。
解决办法很简单
先把quartz配置信息提取出来,单独存成一个文件,比如applicationContext-quartz.xml
然后修改web.xml,让web容器启动时,可以加载该文件
这样quartz只会在web容器启动时加载一次,Spring不会再加载了。
web.xml配置如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/applicationContext-timertask.xml</param-value>
</context-param>
<!-- 开启监听 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
打印出他们的hashcode,发现是不一样的,也就是说,在web容器启动的时候,重复启了两个quartz线程。
研究下来发现quartz确实会加载两次:
第一次:web容器启动的时候,读取applicationContext.xml文件时,会加载一次。
第二次:Spring本身会加载applicationContext.xml一次。
而我的quartz配置就是写在applicationContext.xml文件里的。
解决办法很简单
先把quartz配置信息提取出来,单独存成一个文件,比如applicationContext-quartz.xml
然后修改web.xml,让web容器启动时,可以加载该文件
这样quartz只会在web容器启动时加载一次,Spring不会再加载了。
web.xml配置如下:
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/classes/applicationContext.xml,/WEB-INF/classes/applicationContext-timertask.xml</param-value>
</context-param>
<!-- 开启监听 -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
0 0
- Spring的quartz定时器同一时刻重复执行二次的问题解决
- Spring的quartz定时器同一时刻重复执行二次的问题解决
- Spring的Quartz定时器同一时刻重复执行二次的问题解决
- Spring的Quartz定时器同一时刻重复执行二次的问题解决
- Spring的quartz定时器同一时刻重复执行二次的问题解决
- Spring的Quartz定时器同一时刻重复执行二次的问题解决
- Spring的quartz定时器同一时刻重复执行二次的问题解决
- Spring的quartz定时器重复执行二次的问题解决
- Spring的quartz定时器重复执行二次的问题
- maven项目整合Spring与quartz出现的定时器任务二次重复执行问题(2017年12月2日16:57:32)
- Spring+Quartz定时器执行2次问题解决
- spring的Quartz定时器
- Spring的quartz定时器
- Spring+Quartz定时器的使用
- Spring 定时器Quartz的用法
- Spring Quartz定时器的配置
- Spring 定时器Quartz的用法
- Spring Quartz定时器的使用
- geoserver+postgis+postgresql+arcgis
- error PRJ0019: A tool returned an error code from
- C语言编译错误记录
- MFC中跨线程UpdateData(FALSE)报错 ASSERT FAILD问题
- nginx与lvs负载均衡的较量分析
- Spring的Quartz定时器同一时刻重复执行二次的问题解决
- 接口默认值引发Qt调用DLL异常
- ASP.NET魔法---Repeater变量、对象单独绑定
- 4G时代打电话 背后隐藏了一个小秘密
- WPF MVVM模式实践
- sum(sheet1:sheet100!A1)
- 存储系统----SQL SERVER I/O
- 完整的站内搜索Demo(Lucene.Net+盘古分词)
- 2013年企业测试需求调研与交流回顾