在SSH框架下使用基于配置的Spring3的调度任务每次执行2次的问题
来源:互联网 发布:139端口是什么服务 编辑:程序博客网 时间:2024/05/22 07:45
近日,在项目中使用Strtus1.2+Spring 3.0.6+Hibernate 3.3.2,搭建一个小业务系统,有定时执行某些任务的需要,并且涉及到数据库操作,不经意间发现spring3.0新增了一个内置的调度任务,使用方式与quartz类似,而且功能也差不多,所以尝试着使用此功能。
刚开始,使用间隔的形式,每次任务都执行2次,一开始以为是这个间隔不是很精确造成的,后来在上线前的测试中发现,要求每周一凌晨3点执行的任务,结果一下执行2次,导致很多重复数据。
不断调整cron表达式,问题依旧。
不断Google、baidu,总是找不到类似问题,但是,在一篇介绍spring3调度任务的文章中,提到老外们发现的一个bug,就是使用基于标记的调度任务时,任务每次会执行2次,而且spring官网已经将这个bug规划到3.2版本解决。但是,我使用的不是基于标记而是基于配置的调度任务,用E文关键字搜索一下,发现确实有类似情况,不过人家说是由于spring配置文件被多次加载造成的,多数是由于web.xml中配了spring的监听,又配置了spring的servlet造成的,但是我的web.xml比较正常,没有类似问题。
但是,由于action采用spring管理的模式,因此,在struts的配置文件中
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml" /></plug-in>
而applicationContext.xml文件中有以下内容<import resource="action-config.xml" /><import resource="springTasks.xml" />相当于applicationContext.xml文件把所有的相关配置都加载进来。而在web.xml里面
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener>已经加载过一次applicationContext.xml,这样,相当于applicationContext.xml被加载两次,因此,涉及到调度任务的部分自然就会被执行两次。
解决办法很简答,由于之前已经把与struts相关的部分bean的配置单独拿出来放在action-config.xml文件中了,因此,直接修改struts-config.xml文件中ContextLoederPlugIn的部分为以下内容
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn"><set-property property="contextConfigLocation" value="/WEB-INF/action-config.xml" /></plug-in>重新启动应用,问题解决!
- 在SSH框架下使用基于配置的Spring3的调度任务每次执行2次的问题
- Spring3.0的任务调度
- 框架Quart在Java中任务调度的使用
- quartz任务调度框架实现任务定时执行,不传参的配置(一)
- spring3中使用注解的方式来进行任务调度
- 解决sping 定时任务在tomcat发布时执行2次的问题
- 解决spring quartz定时任务执行2次的问题
- 基于quartz任务调度组件的使用
- 任务调度器quartz与ssh框架的Web交互配置
- 任务调度器quartz与ssh框架的Web交互配置
- laravel Task Scheduling(任务调度)在windows下的使用
- quartz任务调度框架的简单使用
- quartz任务调度框架的使用
- 基于SSH框架的easyUI的基本使用(下)
- 使用laravel的任务调度(定时执行任务)
- 基于Portlet的调度任务
- Spring框架下的定时任务执行
- SSH框架整合 基于 XML 的配置
- shellcode API的自动定位
- Ⅱ型糖尿病新致病基因浮出水面
- 系统自带的 自动关机 参数
- Hibernate配置文件
- 取上月的具体一天
- 在SSH框架下使用基于配置的Spring3的调度任务每次执行2次的问题
- Struts2配置文件详解——struts.xml
- enq: TX - row lock contention 等待事件
- 保存一点android面试笔试资料
- ODU恢复测试二:drop表恢复(troubleshoot版)
- linux多线程学习笔记
- mysql 编译安装
- maven 深入了解
- Full screen检测方法