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 定时任务的更多相关文章

  1. atititt.java定时任务框架选型Spring Quartz 注解总结

    atititt.java定时任务框架选型Spring Quartz 总结 1. .Spring Quartz  (ati recomm) 1 2. Spring Quartz具体配置 2 2.1. 增 ...

  2. java定时任务

    java定时任务实现方法: public class TimingTask { private static int count = 0; private static SpiderService s ...

  3. [转][JAVA]定时任务之-Quartz使用篇

    [BAT][JAVA]定时任务之-Quartz使用篇 定时任务之-Quartz使用篇 Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与 ...

  4. Java定时任务器

    java定时任务,每天定时执行任务.以下是这个例子的全部代码. public class TimerManager { //时间间隔 private static final long PERIOD_ ...

  5. Quartz实现JAVA定时任务的动态配置

    什么是动态配置定时任务? 首先说下这次主题,动态配置.没接触过定时任务的同学可以先看下此篇:JAVA定时任务实现的几种方式 定时任务实现方式千人千种,不过基础的无外乎 1.JDK 的Timer类 2. ...

  6. java——定时任务

    java定时任务直接看代码 public void timeTask(){ Timer timer = new Timer(); timer.schedule(new TimerTask() { pu ...

  7. Java定时任务的常用实现

    Java的定时任务有以下几种常用的实现方式: 1)Timer 2)ScheduledThreadPoolExecutor 3)Spring中集成Cron Quartz 接下来依次介绍这几类具体实现的方 ...

  8. 详解java定时任务

    在我们编程过程中如果需要执行一些简单的定时任务,无须做复杂的控制,我们可以考虑使用JDK中的Timer定时任务来实现.下面LZ就其原理.实例以及Timer缺陷三个方面来解析JavaTimer定时器. ...

  9. [JAVA]定时任务之-Quartz使用篇

    Quartz是OpenSymphony开源组织在Job scheduling领域又一个开源项目,它可以与J2EE与J2SE应用程序相结合也可以单独使用.Quartz可以用来创建简单或为运行十个,百个, ...

  10. java定时任务实现

    在java中需要使用到定时任务是,可以通过quartz来实现.

随机推荐

  1. 完全背包问题 POJ1384

    完全背包即物品的数量不收限制, 根据01背包的思想,因为每件物品只能选1个,则要求我们不能依赖已选择物品i的选项的时候,所以需要逆序遍历 则在完全背包问题中,我们需要正序遍历. 此题时要求求出最小价值 ...

  2. ini_set 设置php配置项 在windows和linux下的不同

    在win下,当你要include多个路径的话,你要用“:”隔开,但在linux下就使用":"隔开的.. if (substr(php_uname(), 0, 7) == " ...

  3. 解决 label 多行间距

    使用. 一个是间距,一个是行高,但是鉴于多行,都写的话,就相当于双倍行高了.我就用行高代替间距. self.textLabel.attributedText = [self getAttributed ...

  4. getContextPath、getServletPath、getRequestURI的区别

    假定你的web application 项目名称为news,你在浏览器中输入请求路径: http://localhost:8080/news/main/list.jsp 则执行下面向行代码后打印出如下 ...

  5. ZOJ2532_Internship

    一个单源多汇的有向图,求增大那些边的容量可以使得网络的最大流增加. 很简单,直接跑最大流,保留残余网络,然后枚举所有余量为0的边,使其容量增加一个1,看看是否出现新的增广路即可. 召唤代码君: #in ...

  6. Android多点触控技术实战,自由地对图片进行缩放和移动

    转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/11100327 在上一篇文章中我带着大家一起实现了Android瀑布流照片墙的效果, ...

  7. JS-for中的i

    var aBtn = document.getElementsByTagName('input');        for( var i=0; i<aBtn.length; i++ ){     ...

  8. 找出单链表的倒数第K个(从1开始计数)结点的值

    typedef struct Link { int data; struct Link* next; }NODE,*pNODE; NODE *searchK(NODE *phead, int k) { ...

  9. js 根据年月获取当月有多少天_js获取农历日期_及Js其它常用有用函数

    //根据年月获取当月有多少天 function getDaysInMonth(year, month) { debugger; //parseInt(number,type)这个函数后面如果不跟第2个 ...

  10. Java小应用程序Applet,画布上新建按钮和文本

    <pre name="code" class="java">package com.hx; import java.applet.*; import ...