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来实现.
随机推荐
- coreseek实战(三):全文搜索在php中应用(使用api接口)
coreseek实战(三):全文搜索在php中应用(使用api接口) 这一篇文章开始学习在php页面中通过api接口,使用coreseek全文搜索. 第一步:综合一下前两篇文章,coreseek实战( ...
- Xshell快捷键
Ctrl + L 清除工作区的内容
- django 创建项目
django-admin startproject project-name 启动服务器 python manage.py runserver 0.0.0.0:8000 配置ALLOW_HOST
- FMDB基本应用
1.打开数据库 #import "ViewController.h" #import "FMDB.h" @interface ViewController () ...
- C#压缩文件 不压缩路径
我想把 E:\\AA\BB\11.txt 压缩后存入 E:\\AA1\BB1\11.rar 但是当我解压( E:\\AA1\BB1\11.rar)的时候,发现:11.txt 不是在 E:\\AA1\B ...
- StringGrid 实例1:初始化StirngGrid的首行和首列
实例1:初始化StirngGrid的首行和首列
- LeetCode OJ--Minimum Window Substring ***
https://oj.leetcode.com/problems/minimum-window-substring/ 模拟题 这道题细节比较多.从左到右扫一遍模拟着做 class Solution { ...
- Html/Css(新手入门第一篇)
一.理解web标准含义--为什么采用web标准*****将内容与样式分离1.web标准是一系列标准,就是一系列技术标准在使用时,是组合应用[1].结构化内容 html[2].表现化内容 css[3]. ...
- spring随想
//不定时持续更新 1.拦截器通过配置文件,在某方法前后添加一些处理,如权限判断等,减少了改方法需要处理的事,是其更专注,由配置文件来设定责任链,更灵活,而且责任链能够复用(一方面是这样能由sprin ...
- MySQL大小写敏感说明
Linux环境下,不是windows平台下.区别很大.注意. 一图胜千言 mysql> show create table Ac; +-------+-------------------- ...