Java 定时任务
control 类
Date nowDate = new Date();
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String jobName = lwhbh + "_" + jydm + "_" + jybs + "_"+ cldm + "_bz"; if ((openTime != null) && (!openTime.equals(""))){
openTime = openTime.trim();
TaskManage task = new TaskManage(BcpJyctrlTask.class);
task.addTask(this.datasource, openTime, jobName + "_" + openTime, "bcpJyctrl", null); YwBcpJyctrlTime jyct = new YwBcpJyctrlTime();
jyct.setLwhbh(lwhbh);
jyct.setJydm(jydm);
jyct.setJybs(jybs);
jyct.setCldm(cldm);
jyct.setYwlx(ywlx);
jyct.setJymc(jymc);
jyct.setGxrq(gxrq);
jyct.setKtbz("1");// 1-开通
jyct.setSdsj(df.format(nowDate));
jyct.setYxsj(openTime);
jyct.setYxzt("0");// 0-待执行 saveObj(jyct);
}
TaskManage.java
import hs.util.HsException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Set;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.TriggerBuilder;
import org.quartz.impl.matchers.GroupMatcher; public class TaskManage {
private Class taskClass;
public static final String DATEFORMAT = "yyyy-MM-dd HH:mm:ss";
public static final int WAITTIME = 10; public TaskManage(Class taskClass) {
this.taskClass = taskClass;
} private Scheduler getScheduler() throws SchedulerException {
return SchedulerManage.getSchedulerFactory().getScheduler();
} public void addJob(String jobName, String groupName, String cronSchedule, Object obj, String datasource) throws SchedulerException {
JobDetail jobDetail = JobBuilder.newJob(this.taskClass).withIdentity("job-" + jobName, "job-" + groupName).build(); CronTrigger cronTrigger = (CronTrigger) TriggerBuilder.newTrigger().withIdentity("tri-" + jobName, "tri-" + groupName)
.withSchedule(CronScheduleBuilder.cronSchedule(cronSchedule)).build(); jobDetail.getJobDataMap().put("obj", obj);
jobDetail.getJobDataMap().put("datasource", datasource); getScheduler().scheduleJob(jobDetail, cronTrigger);
} public void deleteTask(String jobName, String groupName) throws SchedulerException {
getScheduler().deleteJob(new JobKey("job-" + jobName, "job-" + groupName));
} public boolean judgeIsTaskLive(String jobName, String groupName) throws SchedulerException {
return getScheduler().checkExists(new JobKey("job-" + jobName, "job-" + groupName));
} public void addTask(String datasource, String taskTime, String jobName, String groupName, Object obj) throws HsException {
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
Date nowDate = new Date();
if ((taskTime != null) && (!taskTime.equals(""))) {
Date openDate = df.parse(taskTime);
if (openDate.getTime() < nowDate.getTime() + 10L) {
throw new HsException("", "设定的定时时间小于或等于当前系统时间,请重新设定!");
}
if (judgeIsTaskLive(jobName, groupName)) {
deleteTask(jobName, groupName);
} StringBuffer cronSchedule = new StringBuffer(); cronSchedule.append(taskTime.substring(17));
cronSchedule.append(" ");
cronSchedule.append(taskTime.substring(14, 16));
cronSchedule.append(" ");
cronSchedule.append(taskTime.substring(11, 13));
cronSchedule.append(" ");
cronSchedule.append(taskTime.substring(8, 10));
cronSchedule.append(" ");
cronSchedule.append(taskTime.substring(5, 7));
cronSchedule.append(" ");
cronSchedule.append("?");
cronSchedule.append(" ");
cronSchedule.append(taskTime.substring(0, 4)); addJob(jobName, groupName, cronSchedule.toString(), obj, datasource);
} } catch (ParseException e) {
throw new HsException("", "设定定时时间格式错误!");
} catch (SchedulerException e) {
e.printStackTrace();
throw new HsException("", "定时任务设定出错!");
}
} public Set getJobNameByGroupName(String groupName) throws HsException {
try {
return getScheduler().getJobKeys(GroupMatcher.jobGroupEquals("job-" + groupName));
} catch (SchedulerException e) {
throw new HsException("", "获取定时任务名称出错!\n" + e.getMessage());
}
}
}
TaskJob.java
import com.hundsun.log.HsLogger;
import com.hundsun.tamc.base.BeanFactoryUtil;
import com.hundsun.tamc.base.HibernateDaoBS;
import java.io.PrintStream;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public abstract class TaskJob implements Job {
public static final String OBJ_NAME = "obj";
public static final String DATASOURCE_NAME = "datasource";
protected JobDataMap jobDataMap;
protected HibernateDaoBS baseHibernate; public HibernateDaoBS getHibernateDaoBS(String datasource) {
HibernateDaoBS baseHibernate = (HibernateDaoBS) BeanFactoryUtil.getBean(datasource, "hibernateBSProxy");
return baseHibernate;
} public void execute(JobExecutionContext jobCtx) throws JobExecutionException {
HsLogger.getInstance().writeInfo("【定时任务:开始】");
System.out.println("【定时任务:开始】" + new Date().toLocaleString());
HsLogger.getInstance().writeInfo(jobCtx.getJobDetail().getKey() + " triggered. time is:" + new Date());
this.jobDataMap = jobCtx.getJobDetail().getJobDataMap();
String datasource = (String) this.jobDataMap.get("datasource");
this.baseHibernate = getHibernateDaoBS(datasource);
body(jobCtx);
HsLogger.getInstance().writeInfo("【定时任务:结束】");
System.out.println("【定时任务:结束】" + new Date().toLocaleString());
} public abstract void body(JobExecutionContext paramJobExecutionContext) throws JobExecutionException;
}
BcpJyctrlTask.java
import com.hundsun.log.HsLogger;
import com.hundsun.tamc.control.app.timetask.sys.TaskJob;
import com.hundsun.tamc.hibernate.app.bcp.YwBcpJyctrlTime; import hs.util.HsException; import java.util.List; import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException; public class BcpJyctrlTask extends TaskJob
{
@SuppressWarnings("rawtypes")
public void body(JobExecutionContext jobCtx)
throws JobExecutionException
{
String jobName = jobCtx.getJobDetail().getKey().getName();
String yxzt = "1"; String yxsj = "";
String lwhbh = "";
String jydm = "";
String jybs = "";
String cldm = "";
StringBuffer sqlTemp;
try
{
String[] ywbz = jobName.substring(4, jobName.length() - 20).split("_");
yxsj = jobName.substring(jobName.length() - 19);
lwhbh = ywbz[0];
jydm = ywbz[1];
jybs = ywbz[2];
cldm = ywbz[3]; StringBuffer ywStr = new StringBuffer();
ywStr.append("from YwBcpJyctrlTime where yxzt='0' and jydm='");
ywStr.append(jydm);
ywStr.append("' and lwhbh='");
ywStr.append(lwhbh);
ywStr.append("' and jybs='");
ywStr.append(jybs);
ywStr.append("' and cldm='");
ywStr.append(cldm);
ywStr.append("' and yxsj='");
ywStr.append(yxsj);
ywStr.append("'");
List list = this.baseHibernate.findObjs(ywStr.toString());
YwBcpJyctrlTime jyctrlTime;
if ((list != null) && (list.size() > 0)){
jyctrlTime = (YwBcpJyctrlTime)list.get(0);
}else{
throw new HsException("ERR_DEFAULT", "交易控制未找到可运行的定时任务!");
}
StringBuffer sql = new StringBuffer("update YwBcpJyctrl set ktbz='");
sql.append(jyctrlTime.getKtbz());
sql.append("' where jydm='");
sql.append(jyctrlTime.getJydm());
sql.append("' and lwhbh='");
sql.append(jyctrlTime.getLwhbh());
sql.append("' and jybs='");
sql.append(jyctrlTime.getJybs());
sql.append("' and cldm='");
sql.append(jyctrlTime.getCldm());
sql.append("'");
this.baseHibernate.exeHQL(sql.toString());
}catch (HsException e) {
e.printStackTrace();
yxzt = "3";
}catch (Exception e)
{
e.printStackTrace();
yxzt = "3";
}
finally
{
sqlTemp = new StringBuffer();
sqlTemp.append("update YwBcpJyctrlTime set yxzt='" + yxzt + "' where yxzt='0' and jydm='");
sqlTemp.append(jydm);
sqlTemp.append("' and lwhbh='");
sqlTemp.append(lwhbh);
sqlTemp.append("' and jybs='");
sqlTemp.append(jybs);
sqlTemp.append("' and cldm='");
sqlTemp.append(cldm);
sqlTemp.append("' and yxsj='");
sqlTemp.append(yxsj);
sqlTemp.append("'");
try {
this.baseHibernate.exeHQL(sqlTemp.toString());
} catch (HsException e) {
HsLogger.getInstance().writeInfo("交易控制定时任务更新出错!\n" + e.toString());
}
}
}
}
Java 定时任务的更多相关文章
- atititt.java定时任务框架选型Spring Quartz 注解总结
atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...
- java定时任务
java定时任务实现方法: public class TimingTask { private static int count = 0; private static SpiderService s ...
- [转][JAVA]定时任务之-Quartz使用篇
[BAT][JAVA]定时任务之-Quartz使用篇 定时任务之-Quartz使用篇 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与 ...
- Java定时任务器
java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager { //时间间隔 private static final long PERIOD_ ...
- Quartz实现JAVA定时任务的动态配置
什么是动态配置定时任务? 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 定时任务实现方式千人千种,不过基础的无外乎 1.JDK 的Timer类 2. ...
- java——定时任务
java定时任务直接看代码 public void timeTask(){ Timer timer = new Timer(); timer.schedule(new TimerTask() { pu ...
- Java定时任务的常用实现
Java的定时任务有以下几种常用的实现方式: 1)Timer 2)ScheduledThreadPoolExecutor 3)Spring中集成Cron Quartz 接下来依次介绍这几类具体实现的方 ...
- 详解java定时任务
在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析JavaTimer定时器. ...
- [JAVA]定时任务之-Quartz使用篇
Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...
- java定时任务实现
在java中需要使用到定时任务是,可以通过quartz来实现.
随机推荐
- java多线程详解(6)-线程间的通信wait及notify方法
Java多线程间的通信 本文提纲 一. 线程的几种状态 二. 线程间的相互作用 三.实例代码分析 一. 线程的几种状态 线程有四种状态,任何一个线程肯定处于这四种状态中的一种:(1). 产生(New) ...
- cinder ha
- session的使用方法
概念:session把客户资料存在服务器中,给浏览器一个加密凭证,每次登录生成的凭证都不相同,浏览器用cookie保存凭证.下次访问时服务器收到凭证后,打开文件读取session信息.session_ ...
- 计算机图形学——OpenGL开发库开发库
vc++6.0 有 OpenGL 的东西.有头文件 GL.H, GLAUX.H, GLU.H 但没有 GLUT 软件包/工具包 如果想使用glut.h的话必须自己添加. 首先下载 OpenGL开发库, ...
- 1606: [Usaco2008 Dec]Hay For Sale 购买干草
Description 约翰遭受了重大的损失:蟑螂吃掉了他所有的干草,留下一群饥饿的牛.他乘着容量为C(1≤C≤50000)个单位的马车,去顿因家买一些干草. 顿因有H(1≤H≤5000)包 ...
- Java起源、发展历程、环境变量、第一个Java程序等【1】
若有不正之处,请多多谅解并欢迎批评指正,不甚感激. 请尊重作者劳动成果,转载请标明原文链接: 本文原创作者:pipi-changing 本文原创出处:http://www.cnblogs.com/pi ...
- EXCEL某列长度超过255个字符导入SQL SERVER的处理方法
问题描述: [Excel 源 [1]] 错误: 输出“Excel 源输出”(9) 上的 输出列“Description 3”(546) 出错.返回的列状态是:“文本被截断,或者一个或多个字符在目标代码 ...
- Programming Assignment 2: Randomized Queues and Deques
实现一个泛型的双端队列和随机化队列,用数组和链表的方式实现基本数据结构,主要介绍了泛型和迭代器. Dequeue. 实现一个双端队列,它是栈和队列的升级版,支持首尾两端的插入和删除.Deque的API ...
- cygwin下清屏的三种方法
1. 做一个clear脚本,放到/bin下去 $vim /bin/clear #!/bin/bash cmd /c cls 2. ctrl + L 3. 在cygwind中install ncurse ...
- 将枚举定义生成SQL中的Case-When-then语句
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...