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来实现.
随机推荐
- mysql 字符串处理优化
周五下午,同事突然说有个存储过程要帮忙优化,就拿来看看,大概看了下: 数据库端需求:数据库中要存储一个AppID字段,对应一个Account可以自行设置自己的AppID(我就不从业务上多说了), 以前 ...
- oracle 用户的管理<二>
oracle 用户的管理 创建用户 概述:在 oracle 中要创建一个新的用户使用 create user 语句,一般是具有 dba(数据库管理员)的权限才能使用. create user 用户名 ...
- android studio小技巧
1. 为了防止乱码,请将 android studio 右下角编码设置成 UTF-8 2. Ctri + Q 查看api 3 Ctri + Shift +U 大小写互换 4 Ctrl + Alt + ...
- 按enter执行click或者搜索问题
最近需要将按按钮搜索的功能,改为支持按enter回车键,搜索. 实现按enter,执行click事件还是比较简单的. //按回车搜索用户 $(window).keydown(function (eve ...
- Windows server 2003 WINS的配置和使用详解
NetBios名称概述 网络中的一台计算机可以使用NETBIOS和DNS两种命名方式为其命名,在NETBIOS标准中,使用长度不超 过16个字符的名称来惟一标识每个网络资源,用于标识资源或服务类型.在 ...
- spring 源码下载地址
1, github: https://github.com/spring-projects/spring-framework SVN: https://github.com/spring-projec ...
- update select
update中加入select 最常用的update语法是:UPDATE <table_name>SET <column_name1> = <value>, SET ...
- Apache配置多域名 AH00548: NameVirtualHost has no effect and will be removed in the next release
httpd-vhosts.conf 中首行 NameVirtualHost *:80 删除掉即可解决.
- App开发的过程
直播App开发的过程 第一步:分解直播App的功能,我们以X客为例 视频直播功能,这是一款直播App最主要的功能,要能支持视频直播RTMP推流,使画面传输流畅.清晰(美颜后的清晰,你懂的聊天功能,用户 ...
- c# 验证码类
using System; using System.Drawing; using System.Drawing.Drawing2D; using System.Drawing.Imaging; us ...