package com.jit.util;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class KQServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public KQServlet() {
super();
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
doGet(req, resp);
}
@Override
public void destroy() {
super.destroy();
}
@Override
public void init() throws ServletException {
// 启动定时器
System.out.println("启动定时器");
String hour = (String) this.getServletConfig().getInitParameter("Time");
new KQTaskManager(hour);
}
}
package com.jit.util;
import java.util.Calendar;
import java.util.Date;
import java.util.Timer;
public class KQTaskManager {
private static final long PERIOD_DAY = 1000 * 60*60*24;
public KQTaskManager(String hour) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.HOUR_OF_DAY, Integer.valueOf(hour));
cal.set(Calendar.MINUTE, 0);
cal.set(Calendar.SECOND, 0);
Date date = cal.getTime();
// 如果第一次执行定时任务的时间 小于 当前的时间
// 此时要在 第一次执行定时任务的时间 加一天,以便此任务在下个时间点执行。如果不加一天,任务会立即执行
if (date.before(new Date())) {
date = this.addDay(date, 1);
}
Timer timer = new Timer();
// 将任务实例化
KQTask task = new KQTask();
// 将任务装载到任务调度中
System.out.println("将任务装载到任务调度中!!");
timer.schedule(task, date, PERIOD_DAY);
}
// 增加减少天数
public Date addDay(Date date, int num) {
Calendar cal = Calendar.getInstance();
cal.setTime(date);
cal.add(Calendar.DAY_OF_MONTH, num);
return cal.getTime();
}
}
package com.jit.util;
import java.util.List;
import java.util.TimerTask;
import jit.wau.dbbean.UpdateDB;
import org.apache.log4j.Logger;
public class KQTask extends TimerTask {
private static Logger log = Logger.getLogger(KQTask.class);
private UpdateDB dbbean;
private UpdateDB dbbean_kq;
// private static final String dataSourceOTA = "java:comp/env/OTA";
private KQGetDataSource source = new KQGetDataSource();
/*
* run方式是定时器的主要实现方法 里面需要执行每天对考勤数据的查询和数据的插入
*/
@Override
public void run() {
// 每个任务都需要初始化dbbean 再将dbbean清理掉
System.out.println("定时器开始工作!!!!");
dbbean = source.getDBean(KQDataSource.SOURCE_OTA);
dbbean_kq = source.getDBean(KQDataSource.SOURCE_KQDS);
try {
KQDataSelect select = new KQDataSelect(dbbean, dbbean_kq);
List<KQDep> kqdepList = select.getKQInfo();
if (kqdepList != null) {
System.out.println("考勤部门数据查询成功!!!!!!!!!");
}
KQDataInsert insert = new KQDataInsert(dbbean, dbbean_kq);
int flag = insert.insertKQInfo(kqdepList);
if (flag > 0) {
System.out.println("考勤部门数据插入成功!!!!!!!!!!!");
dbbean.commitToDB();
} else {
dbbean.rollBackDB();
}
} catch (Exception e) {
e.printStackTrace();
dbbean.cleanUp();
dbbean_kq.cleanUp();
} finally {
dbbean.cleanUp();
dbbean_kq.cleanUp();
}
System.out.println("定时器结束工作!!!!");
}
public KQTask() {
}
}
分享到:
相关推荐
java web 定时器例子
Timer类是用来执行任务的类,它接受一个TimerTask做参数 ,这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 。Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:
比较全面的定时器,里面有例子,照着例子就可以学会spring和java定时器。
JAVA中定时器的使用,看例子学习定时器........一看就懂,一用就会
在Java中创建和使用定时器的一个小例子代码,绘制数字的Canvas对象,设置当前的绘图对象,设置定时器的运行时间,并包括了生成随机数的For循环,考察了多个Java技巧的编程,不仅仅是定时器的使用。
java定时器 的一篇非常完整的文章和例子
java定时器示例 javaweb定时器示例 spring定时器示例,有文章,有例子
一个关于quartz定时器的例子,基于日历指定触发器,可以使用CronTrigger。使用CronTrigger可以实现类似的触发器,比如:每个星期五的下午。比如每个星期一,三和五的上午9点到10点之间每隔5分钟。 CronTrigger也有...
定时器模板,使用maven创建,里面有一个例子,加载后导入Tomcat可以直接看到效果,可直接修改。如果报错注意修改运行环境
绝对可用大家可以放心下载!不要忘记学习完后给我好评!谢谢
根据自己之前的项目和关于定时器的一些例子,自己做的一个小的定时器的demo,很简单不复杂
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
定时器框架Saturn,VIP使用的,内容包含对定时器的介绍,以及Saturn的使用例子
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码,...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
Java二进制IO类与文件复制操作实例,好像是一本书的例子,源代码有的是独立运行的,与同目录下的其它代码文件互不联系,这些代码面向初级、中级Java程序员。 Java访问权限控制源代码 1个目标文件 摘要:Java源码...
java8集合源码定时器和定时器任务 定时器是线程调度任务以在后台线程中执行的工具。 任务可以安排为一次性执行,或定期重复执行。 与每个 Timer 对象相对应的是一个单独的后台线程,用于按顺序执行所有计时器的任务...