struts2+quartz定时任务
最近有需求要写一个定时任务 目的是更新一些员工/人员与部门之间的关系
项目用的是struts2 当我加了spring的jar包之后写了一个定时任务 项目经理不让用spring 就修改一下 这次贴个全的
下面是任务类
package com.timetask.action;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.sql.SQLException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import java.util.Map;import com.ibatis.sqlmap.client.SqlMapClient;
import com.ibatis.sqlmap.client.SqlMapExecutor;
import com.ibatis.sqlmap.engine.impl.SqlMapClientImpl;
import com.util.SqlMap;/*** Quartz定时任务* 更新* @author Administrator**/
public class TimeTaskAction {/*定时任务方法*/public void exec() throws SQLException{System.out.println("quartz定时任务开始");try {List<Map> companys = SqlMap.getSqlMap().queryForList("timetask.findAll_company");updateDept(companys);update_sys_yuang();} catch (Exception e) {e.printStackTrace();}System.out.println("quartz定时任务结束!");}/*递归更新部门表corpid*/public void updateDept(List<Map> list){try {for (Map map : list) {SqlMap.getSqlMap().update("timetask.updatetta_by_depid",map.get("DEPID").toString());SqlMap.getSqlMap().update("timetask.updatetta",map.get("DEPID").toString());List<Map> listLevel = SqlMap.getSqlMap().queryForList("timetask.findSubsidiary",map.get("DEPID").toString());if(listLevel.size()>0){updateDept(listLevel);}}} catch (SQLException e) {System.out.println("ibatis执行sql失败");e.printStackTrace();}}/*sys_yuang 表 corpid与sys_dept表corpid同步*/public void update_sys_yuang(){try {long starttime = System.currentTimeMillis();SqlMap.getSqlMap().update("timetask.update_sys_yuang_corpid");long endtime = System.currentTimeMillis()-starttime; System.out.println(endtime);} catch (SQLException e) {System.out.println("存储过程调用失败:"+e.getMessage());e.printStackTrace();}}}
上面是任务类,下面是struts2-quartz配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd"><beans><!-- 要调用的工作类 --><bean id="timetask" class="com.timetask.action.TimeTaskAction"></bean><!-- 定义调用对象和调用对象的方法 --><bean id="mainJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"><property name="targetObject"><ref bean="timetask"/></property><property name="targetMethod"><value>exec</value></property></bean><!-- 定义触发时间 --><!-- 创建触发器 触发器保存任务的执行时间--><bean id="timeTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"><property name="jobDetail" ref="mainJob"></property><!-- 每晚20:01分触发 --><property name="cronExpression" value="0 1 20 * * ?"></property></bean><bean id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"><property name="triggers"><list><ref local="timeTrigger"/></list></property></bean>
</beans>
这是web.xml配置文件
下面是oracle的SQL的xml
把存储过程贴一下 其实就是俩游标
create or replace procedure update_userAndyuang_corpid
as
cursor cur is select d.depid,d.corpid,u.rowid row_id from sys_dept d,sys_user u where u.depid=d.depid order by u.rowid;
cursor cury is select d.depid,d.corpid,u.rowid row_id from sys_dept d,sys_yuang u where u.depid=d.depid order by u.rowid;
v_count number;begin
v_count :=0;
for r in cur loopupdate sys_user set corpid=r.corpid where rowid=r.row_id;v_count:=v_count+1;if(v_count>=1000) thencommit;v_count:=0;end if;
end loop;
commit;
for r in cury loopupdate sys_yuang set corpid=r.corpid where rowid=r.row_id;v_count:=v_count+1;if(v_count>=1000) thencommit;v_count:=0;end if;
end loop;
commit;
end update_userAndyuang_corpid;
成功执行了
完成
struts2+quartz定时任务相关推荐
- quartz定时任务开发cron常用网站
http://cron.qqe2.com/ cron表达式 只能看下5个时点 http://www.cronmaker.com/ 能看500个时点 https://unixtime.5 ...
- 大数据互联网架构阶段 QuartZ定时任务+RabbitMQ消息队列
QuartZ定时任务+RabbitMQ消息队列 一 .QuartZ定时任务解决订单系统遗留问题 情景分析: 在电商项目中 , 订单生成后 , 数据库商品数量-1 , 但是用户迟迟不进行支付操作 , 这 ...
- Quartz定时任务的基本搭建
前言 个人地址:Quartz定时任务的基本搭建 Quartz是一个完全由Java编写的开源作业调度框架,为在java应用程序中进行作业调度提供了简单又强大的机制. Quartz中分为几个核心概念: J ...
- 记一次quartz定时任务不执行排雷
过程 项目中需求统计数据,涉及大屏展示,展示的数据很复杂,所以采取了晚上把数据汇总出来存到redis缓存,供白天查询的方式. 用到了quartz定时任务,写好sql.逻辑等测试没问题,就愉快的部署到了 ...
- Quartz定时任务-@DisallowConcurrentExecution注解
Quartz定时任务默认都是并发执行的,不会等待上一次任务执行完毕,只要间隔时间到就会执行, 如果定时任执行太长,会长时间占用资源,导致其它任务堵塞. 在Spring中这时需要设置concurrent ...
- bboss quartz定时任务使用案例介绍
bboss quartz定时任务使用案例介绍 本文demo gradle工程源码地址: [url]https://github.com/bbossgroups/quartzdemo[/url] [si ...
- Quartz定时任务使用小记(11月22日)
骤然接触quartz,先从小处着手,why,what,how quartz定时任务: 为什么使用quartz定时任务,以及定时任务在实际应用场景下的特定需求. 1.用户方面的需要,为了提供更好的使用体 ...
- Springboot 使用quartz 定时任务 增删改查
前段时间公司项目用到了 定时任务 所以写了一篇定时任务的文章 ,浏览量还不错 , Springboot 整合定时任务 ) 所以就准备写第二篇, 如果你是一名Java工程师,你也可以会看到如下的页面 , ...
- quartz定时任务不执行
quartz定时任务执行一段时间不执行的原因 数据库表QRTZ_TRIGGERS 里的TRIGGER_STATE 字段的值自动修改为ERROR了 ,quartz定时任务是不扫描这种ERROR情况. 之 ...
- Spring Boot配置Quartz定时任务
1 Quartz定时任务 Quartz 是一个完全由 Java 编写的开源任务调度框架,为在 Java 应用程序中进行任务调度提供了简单却强大的机制. 基于定时.定期的策略来执行任务是它的核心功能,比 ...
最新文章
- 在Linux 下配置PHP 支援GD
- python3作用域
- OpenStack基金会的白金和黄金成员公司
- BN究竟起了什么作用?一个闭门造车的分析
- 如何在Java 8中使用LocalDateTime格式化/解析日期-示例教程
- 渐进式web应用程序_如何在渐进式Web应用程序中添加到主屏幕
- C++ 多重继承之内存存储
- oracle建表语句string,编程式Mybatis获取oracle表创建表语句
- 【报告分享】2019区块链赋能新型智慧城市白皮书.pdf(附204页电子书下载链接)
- LeetCode(9)Palindrome Number
- BZOJ1941: [Sdoi2010]Hide and Seek
- Delphi2010 Dll 函数列表查看
- WEB安全扫描器Netsparker推荐给大家
- 服务器硬盘安装win10系统,硬盘安装win10的方法
- 百度网盘客户端二维码无法显示及第三方无法登录问题的解决方法
- android studio 文件名颜色 灰色,绿色,红色,蓝色,白色的含义
- c语言我想你,c语言土味情话
- Windows语音通话SDK集成及功能实现(实时语音通话四)
- 摄影师用AI预测MJ、李小龙活到现在长什么样,网友看后泪目
- MySQL 正负数排序