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定时器主要指的是在Java Web应用程序中实现定时任务的功能,这在许多业务场景中都是必要的,例如数据备份、报表生成、邮件发送等。在Java中,我们可以利用内置的`java.util.Timer`类或者Spring框架的`@...
Timer类是用来执行任务的类,它接受一个TimerTask做参数 ,这两个类使用起来非常方便,可以完成我们对定时器的绝大多数需求 。Timer有两种执行任务的模式,最常用的是schedule,它可以以两种方式执行任务:
### Java定时器:掌握时间的艺术 #### 一、引言 在软件开发中,定时执行特定任务是一项常见的需求。无论是定期清理缓存、发送提醒邮件还是执行后台数据同步,都需要一种机制来确保任务能在预设的时间点或周期性...
Java定时器(Timer)是Java Swing库中的一个类,它提供了调度任务在未来某个时间执行的能力。这个类主要用于在GUI应用程序中实现定时触发某些操作,比如更新界面、执行动画或者执行周期性的后台任务。Timer类结合了...
Java定时器(Timer)是Java语言中用于调度任务的一个重要工具,它可以帮助我们在特定时间执行一次或重复执行某个任务。这个“java定时器.rar”压缩包可能包含了关于如何使用Java定时器的相关示例代码和教程。 Java...
这个例子中,程序会绘制数字的Canvas对象,并通过定时器更新显示的数字,同时使用了生成随机数的For循环,综合运用了多种Java编程技巧。 首先,我们来了解Java中的定时器类`java.util.Timer`和`java.util.TimerTask...
Java定时器结合Spring框架可以创建灵活且可扩展的定时任务,这种技术在许多企业级应用中非常常见,用于执行周期性的后台任务,如数据清理、报告生成或服务调用等。下面将详细介绍如何在Spring中集成Java定时器,并...
Java定时器框架主要由`java.util.Timer`和`java.util.TimerTask`组成,这两个类提供了在Java中安排一次性或重复性任务的能力。然而,这个框架存在一定的局限性,例如无法直接处理夏令时变化导致的时间跳跃问题,对于...
Spring框架和Java内置的定时器提供了两种不同的方式来实现这样的功能。 首先,我们来看Spring定时器。Spring使用的是Quartz库来实现定时任务管理。在给出的例子中,可以看到配置文件中定义了几个关键的bean: 1. `...
在这个例子中,`cronExpression`定义了任务的执行频率,`targetObject`和`targetMethod`指定了任务执行的具体对象和方法。 当遇到Spring定时器执行两次的问题时,可能的原因有以下几点: 1. **多实例问题**:如果...
### Java定时器的实现 #### 一、概述 在Java编程中,定时执行特定任务是一种常见的需求。例如,定期清理缓存、定时发送邮件或执行数据同步等操作。Java提供了多种方式来实现定时任务,其中之一就是利用内置的`java...
总结一下,Java定时器(java.util.Timer)和TimerTask配合使用,可以方便地实现定时执行任务的需求。通过结合Servlet监听器,我们可以确保定时器在Web应用启动时启动,并在应用关闭时停止,确保任务的生命周期与Web...
Java定时器(Timer)是Java标准库中提供的一种任务调度工具,它允许程序员安排在未来某个时间点或定期执行任务。这个API包含`java.util.Timer`类和`java.util.TimerTask`类,它们协同工作来实现定时执行的任务。使用...
【Java Timer定时器】 在Java中,`java.util.Timer` 类是用于调度任务的类,它可以在特定的时间点或者按照设定的周期执行某项任务。`Timer` 类提供了两种计划任务的方法:`schedule(TimerTask task, long delay)` ...
Java定时器在Web应用中的实现主要涉及到`java.util.Timer`类和`ServletContextListener`接口,它们在Spring、Struts、Hibernate等框架环境下同样适用。本文将详细解释如何使用这两个核心组件来实现在Web环境中定时...
Java定时器是Java编程语言中用于执行定时任务的关键组件,主要通过`java.util.Timer`类和`java.util.TimerTask`类来实现。Spring MVC框架,作为Spring框架的一部分,提供了更高级且灵活的方式来管理定时任务,这使得...
Java定时器是Java标准库中的一个实用工具,用于在特定时间执行预定任务。它主要由`java.util.Timer`和`java.util.TimerTask`类组成,这两个类为开发者提供了简单的时间调度功能。在Java 1.3之前,创建自定义调度程序...
Java在服务启动时启动定时器是一项常见的需求,用于执行定期任务,例如数据同步、日志清理、健康检查等。在Java中,我们可以使用多种库来实现这个功能,其中最常用的两个是`java.util.Timer`和`java.util.concurrent...