- 浏览: 322468 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
chenfang_0913:
您好,我按照您的方法在Windows端进行了实现,可是我一直捕 ...
java实现网卡数据包抓取学习 -
wps886:
google了半天全是错的,只有楼主的xml配置有用,太感谢了 ...
奇怪的400 BAD REQUEST -
laputa73:
node.addEventListener('mouseup' ...
网络拓扑图DEMO -
njyyao:
单击、双击、右击的事件处理事件?
网络拓扑图DEMO -
lilinshtandby:
不错不错,赞一个
dhtmlxTree总结
最近做了一个用java实现oracle备份的业务实现,现理清一下思路,做个备份^_^
业务难点:
1.由于要执行的定时任务是可以修改的,也就是动态的,用户可以选择是否要执行自动备份,什么时候备份,间隔多长时间备份一次
首先考虑到用quartz,但是quartz是需要配置的,而且用户如果不想要自动备份需要停止的时候,如果只单单使用quartz是很难办到的,在得到了众多网友的帮助下,终于想通了
思路如下:
使用quartz定义每隔一小时,查询一遍数据库autodb表,autodb表中仅有一条记录,
create table AUTODB
(
ID NUMBER(10) not null,
ISAUTO CHAR(1) default 0,
NEXTTIME DATE,
TYPE NUMBER(1) default 1,
CYC NUMBER(2) default 1,
HOUR NUMBER(2) default 0,
MINUTE NUMBER(2) default 0,
constraint PK_AUTODB primary key (ID)
);
insert into AUTODB(id,isauto,type,cyc) values(1,0,1,1);
/** * 是否备份,0不备份,1备份 */ private String isAuto; /** * 开始的小时时间 */ private int hour; /** * 开始的分钟时间 */ private int minute; /** * 备份的类型,1按天,2按月,3按季度,4按年 */ private int type; /** * 间隔周期 */ private int cyc; private Date nextTime;
quartz是在spring下配置的,每个1小时执行一次,内容如下:
<bean name="listenQuartz" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass"> <value>com.ngworld.insurancecard.db.ListenerQuartz</value> </property> <property name="jobDataAsMap"> <map> <entry key="timeout"><value>5</value></entry> <entry key="dmpService"><ref bean="dmpService"/></entry> </map> </property> </bean> <bean name="simpleQuartzTriggerlistenQuartz" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="listenQuartz"/> </property> <property name="cronExpression"> <value>0 0 0 * * ?</value> </property> </bean>
定时器代码:
import java.util.Calendar; import java.util.Date; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.springframework.scheduling.quartz.QuartzJobBean; import com.ngworld.insurancecard.service.DMPService; import com.ngworld.insurancecard.vo.AutoDB; public class ListenerQuartz extends QuartzJobBean { private DMPService dmpService; public ListenerQuartz(){} protected void executeInternal(JobExecutionContext context) throws JobExecutionException { AutoDB db = dmpService.getAutoDB(); String temp = db.getIsAuto().equals("1")?"是":"否"; System.out.println("定时检测是否需要备份 : "+temp); if(db.getIsAuto().equals("1")){ Date d = new Date(); Calendar next1 = Calendar.getInstance(); next1.setTime(d); // next1.add(Calendar.MINUTE, 1); next1.add(Calendar.HOUR_OF_DAY, 1); next1.add(Calendar.SECOND, 1); //获取下一次执行的时间 Date nexttime = db.getNextTime(); //如果当前时间在下一次执行时间之后,则需要增加下一次执行时间,直到当前时间在下次执行时间之前 if(d.after(db.getNextTime())){ //这里使用while是说明,可能一次的增加无法使下次执行时间大于当前时间,所以要循环增加 while(d.after(db.getNextTime())){ db.setNextTime(getNextTime(db)); if(d.before(db.getNextTime())){ break; } } //把下一次执行的时间保存到数据库 dmpService.updateAutoDB2(db); } Date d2 = next1.getTime(); //判断当前时间增加1小时后,是否是在下次执行时间之后,如果是,则说明,不到1个小时内就需要执行任务了, //所以需要穿件timetask定时器任务,创建一个定时器线程在下次执行的时间执行任务 if(d2.after(nexttime)){ TimeTask t = new TimeTask(db.getNextTime(),dmpService); t.start(); } } } public void setDmpService(DMPService dmpService) { this.dmpService = dmpService; } public Date getNextTime(AutoDB db){ Calendar c = Calendar.getInstance(); c.setTime(db.getNextTime()); //1按天,2按月,3按季度,4按年,5按分钟 if(db.getType()==1){ c.add(Calendar.DATE, db.getCyc()); }else if(db.getType() == 2){ c.add(Calendar.MONTH, db.getCyc()); }else if(db.getType() == 3){ c.add(Calendar.MONTH, db.getCyc()*3); }else if(db.getType()==4){ c.add(Calendar.YEAR, db.getCyc()); }else if(db.getType()==5){ c.add(Calendar.MINUTE, db.getCyc()); } return c.getTime(); } }
定时器任务代码:
public class TimeTask { private Date date; private DMPService dmpService; public TimeTask(Date _date,DMPService _dmpService) { this.date = _date; this.dmpService = _dmpService; } public void start() { System.out.println("执行定时数据库备份"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd-HH-mm"); String backupName = sdf.format(date); DMP dmp = new DMP(); dmp.setName(backupName); SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); dmp.setTime(sdf2.format(date)); dmp.setType("1"); boolean bool = dmpService.saveDmp(dmp); if(bool){ bool = dmpService.exeBackUp(dmp); } } }
发表评论
-
禁止页面放大缩小
2013-05-12 18:42 1866<html> <head> &l ... -
在web.xml中添加多个filter
2011-05-10 15:32 6601web.xml中的多个filter的运行顺序walker(wa ... -
tomcat无法启动
2011-05-08 09:11 1085Myeclipse8.5 + Tomcat7.0.5 发布应 ... -
XML to JSON
2011-04-06 16:17 1268现在JSON在前台的应用越来越广泛,不过也有很多系统是基于XM ... -
ajax tree框架(zTree)
2011-04-05 12:23 2857在以往的项目中,有时会用到树菜单的操作.我用过dhtmltre ... -
通过HttpClient发送Web Service请求
2011-01-19 10:29 1815import java.io.ByteArrayInputSt ... -
使用JES搭建小巧的Mail服务器
2010-10-26 21:56 1542最新需要使用MAIL服务器进行测试,正所谓山不在高,有仙则灵. ... -
struts2+spring2+hibernate3所需要的最少jar包
2010-04-19 16:06 1570Spring2所需要的jar包最简单,只需要一个综合的spri ... -
Struts2中获取requset,session,application
2010-01-04 13:24 1589struts2中Action是集成于com.opensymph ... -
struts2.0中struts.xml配置文件详解(转)
2010-01-04 11:10 1091<!DOCTYPE struts PUBLIC &quo ... -
struts2-Unable to load configuration. - bean - jar
2010-01-01 12:01 2822在整合Struts2 + Spring2 + Hibernat ... -
[转载]企业级SOA之路——在Web Service中使用HTTP和JMS
2009-12-28 10:28 1179本文来自CSDN博客,转载请标明出处:http://blog. ... -
XAMPP虚拟主机配置,实现单主机多个站点
2009-10-24 23:31 2750打开注释 NameVirtualHost *:80 ... -
thinkphp中使用ajax接收json数据
2009-04-01 17:25 9441参考thinkphp+jquery实现ajax,扩展了下,写了 ... -
基于服务器推的web im(未实现)
2009-03-24 16:10 1354想着手研究一下服务器推技术,看看能不能写出一个web im程序 ... -
使用dhtmltree动态生成树菜单总结
2009-03-19 13:49 5712我之前发布的dhtmltree总 ... -
能够自由拖动布局区域的网页
2009-03-11 09:54 2469<html> <head> <t ... -
jquery+json小例子
2009-02-19 16:08 9978由有不当之处,还望大家能指出。 直接进入主题,使用jquery ... -
在OpenFire的基础上安装JWChat 1.0
2009-02-12 17:57 0http://blog.csdn.net/simonhe197 ... -
JSON介绍
2008-12-11 12:18 1990JSON已经被广泛誉为浏览器中XML的替代品,它的目标仅仅是成 ...
相关推荐
spring+springMVC+mybatis+quartz动态定时任务
Spring+Quartz 从数据库中获取定时任务和定时时间,动态实现对定时任务的增删改查,部署到tomcat即可看到定时任务执行效果。本人亲测,可用!
Spring4.3.15 + Quartz2.2 + Spring MVC管理可以管理任务的暂停,启动、立即执行一次、根据表达式重新调度等功能
Spring+Quartz实现定时任务的demo,对应的博客地址为: http://blog.csdn.net/u010397369/article/details/17465649
可以通过quartz和spring的简单配置即可完成,但如果要改变任务的执行时间、频率,废弃任务等就需要改变配置甚至代码需要重启服务器,这里介绍一下如何通过quartz与spring的组合实现动态的改变定时任务的状态的一个...
集群下应用server定时任务执行研究,一方面是spring+quartz集群支持,另一方面是统一调度server 通过IHS方式解决,保证同一时间只有一台应用server执行定时任务
NULL 博文链接:https://thinktothings.iteye.com/blog/804738
现有需求需要每天早上2点和下午5点执行一个方法Synchronization.run(): <!-- 调用频率设置 每天上午2点和下午5点 cron表达式 --> <bean id="runTime" class="org.springframework.scheduling.quartz....
最近项目中使用了spring+Quartz定时任务、但是项目最近要集群部署、多个APP下如何利用Quartz 协调处理任务。 大家可以思考一下、现在有 A、B、C三个应用同时作为集群服务器对外统一提供服务、每个应用下各有一个...
Springboot整合Quartz实现定时任务数据库动态配置,新增任务、修改cron表达式、暂停任务、恢复任务、删除任务等操作
Spring Quartz 动态暂停、恢复、修改定时任务的一个demo,使用maven构建,框架采用spring springmvc jpa,数据库mysql,含数据库脚本,运行可用,页面访问地址http://localhost:8080/quartz_demo/quartz/list
spring注解Quartz定时执行功能
spring整合quartz定时任务调度..........
使用Spring Quartz执行定时任务
启动项目自动开始定时执行任务,默认为每秒执行一次,修改cron表达式就可更换周期,表达式可以上网自动生成。
spring3 配置quartz定时任务的使用。一个小例子。可直接运行Test.java。就可以启动定时任务。每10秒钟执行一次,可以根据自己配置。
3、SpringCloudSchedule定时任务(使用mybatis读写mysql数据库, spring实现定时任务, 按照间隔时间或固定时间方式执行定时任务) 4、定时自动运行任务(在数据库中设置好定时时间,及运行的程序,及参数) 5、C#...
2.通过Spring是JAR-quartz写的一个定时任务 1)普通的定时任务,定时完成指定的任务 2)通过前台动态分配定时任务 可指定多个任务,可同时执行任务,可以精确到时分秒扫描并执行任务 3)可以完成稍微复杂点的任务 ...
spring+quartz整合,动态管理定时任务,可对正在进行的任务操作增删改查,可配合数据库进行操作
NULL 博文链接:https://medbricom.iteye.com/blog/1782765