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来实现.
随机推荐
- zabbix网络发现
zabbix的网络自动发现是一个非常强大的功能,该功能可以完成以下工作 •快速发现并添加主机. •简单的管理. •随着环境的改变而快速搭建监控系统. 网络发现基于以下信息 •ip地址段 •基于服务的F ...
- sqlserver中,查看某个函数的调用情况
今天想在sqlserver中看看自己写的函数都被哪个函数或存储过程调用了,手工检查起来太慢了,于是在网上找一个快速的方法,分享一下. select * from sys.all_sql_modules ...
- 第二章 第二个spring-boot程序(转载)
本编博客转发自:http://www.cnblogs.com/java-zhao/p/5336369.html 上一节的代码是spring-boot的入门程序,也是官方文档上的一个程序.这一节会引入s ...
- STF(SmartPhone Test Farm)Mac版本环境搭建
它的github页面为: https://github.com/openstf/stf 1.Linux一些基本包的安装: 在控制台分别运行 sudo apt-get update sudo apt-g ...
- JS调用BHO
// BHO 中添加下面的函数,设置UIHandler// BHO 包含如下成员变量: // CDocDispatch m_docDispatch;// CComPtr<IDocHostUIHa ...
- display:line-block和blaock的区别
1.使用inline-block 会产生了元素间的空隙 2.line-block主要的用处是用来处理行内非替换元素的高宽问题的!行内非替换元素,比如span.a等标签,正常情况下士不能设置宽高的,加上 ...
- java多条件不定条件查询
网站或各类管理系统都会用到搜索,会用到一个或多个不确定条件搜索,单条件搜索比较简单,有时候会有多个条件共同查询,如果系统中已经提供了相关的方法供你使用最好,像我做这老系统改版,需要添加搜索,就要自己写 ...
- .net 泛型运用
DAL层 private DbContext MyContext; public BaseRepository(DbContext context) { MyContext = context; } ...
- 【二分答案】【贪心】bzoj3969
http://www.cnblogs.com/mmlz/p/4497118.html #include<cstdio> #include<algorithm> using na ...
- Count and Say leetcode
题目链接 The count-and-say sequence is the sequence of integers beginning as follows:1, 11, 21, 1211, 11 ...