- 浏览: 327412 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
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 1903<html> <head> &l ... -
在web.xml中添加多个filter
2011-05-10 15:32 6664web.xml中的多个filter的运行顺序walker(wa ... -
tomcat无法启动
2011-05-08 09:11 1119Myeclipse8.5 + Tomcat7.0.5 发布应 ... -
XML to JSON
2011-04-06 16:17 1300现在JSON在前台的应用越来越广泛,不过也有很多系统是基于XM ... -
ajax tree框架(zTree)
2011-04-05 12:23 2892在以往的项目中,有时会用到树菜单的操作.我用过dhtmltre ... -
通过HttpClient发送Web Service请求
2011-01-19 10:29 1845import java.io.ByteArrayInputSt ... -
使用JES搭建小巧的Mail服务器
2010-10-26 21:56 1601最新需要使用MAIL服务器进行测试,正所谓山不在高,有仙则灵. ... -
struts2+spring2+hibernate3所需要的最少jar包
2010-04-19 16:06 1600Spring2所需要的jar包最简单,只需要一个综合的spri ... -
Struts2中获取requset,session,application
2010-01-04 13:24 1610struts2中Action是集成于com.opensymph ... -
struts2.0中struts.xml配置文件详解(转)
2010-01-04 11:10 1111<!DOCTYPE struts PUBLIC &quo ... -
struts2-Unable to load configuration. - bean - jar
2010-01-01 12:01 2855在整合Struts2 + Spring2 + Hibernat ... -
[转载]企业级SOA之路——在Web Service中使用HTTP和JMS
2009-12-28 10:28 1238本文来自CSDN博客,转载请标明出处:http://blog. ... -
XAMPP虚拟主机配置,实现单主机多个站点
2009-10-24 23:31 2785打开注释 NameVirtualHost *:80 ... -
thinkphp中使用ajax接收json数据
2009-04-01 17:25 9496参考thinkphp+jquery实现ajax,扩展了下,写了 ... -
基于服务器推的web im(未实现)
2009-03-24 16:10 1387想着手研究一下服务器推技术,看看能不能写出一个web im程序 ... -
使用dhtmltree动态生成树菜单总结
2009-03-19 13:49 5737我之前发布的dhtmltree总 ... -
能够自由拖动布局区域的网页
2009-03-11 09:54 2498<html> <head> <t ... -
jquery+json小例子
2009-02-19 16:08 10020由有不当之处,还望大家能指出。 直接进入主题,使用jquery ... -
在OpenFire的基础上安装JWChat 1.0
2009-02-12 17:57 0http://blog.csdn.net/simonhe197 ... -
JSON介绍
2008-12-11 12:18 2029JSON已经被广泛誉为浏览器中XML的替代品,它的目标仅仅是成 ...
相关推荐
Quartz是一个开源的作业调度框架,常用于创建和执行定时任务。在"spring+springMVC+mybatis+quartz动态定时任务创建"项目中,Quartz扮演着关键角色。它可以动态地添加、修改或删除定时任务,这在需要根据业务需求...
在构建企业级应用时,经常会遇到需要执行定时任务的需求,比如数据备份、报表生成、邮件发送等。本项目就是基于Spring MVC、Mybatis、Quartz和Swagger实现的一个定时任务管理系统,旨在提供一种灵活且可配置的方式来...
**Spring+Quartz动态定时任务创建** 将Spring与Quartz结合,我们可以方便地在运行时动态创建和修改定时任务。首先,我们需要在Spring配置文件中声明一个SchedulerFactoryBean,然后定义JobDetail和Trigger,分别表示...
在 "spring+quartz定时小例子" 中,我们主要关注的是如何将这两个框架结合使用,创建一个可以执行定时任务的应用。这个例子包含了相关的框架包和文档,帮助开发者理解并实践这一整合过程。 1. **Spring 配置**: ...
首先,Quartz是一个开源的作业调度框架,它允许开发者创建、安排和执行定时任务。Quartz支持从数据库存储作业和触发器,这样可以方便地进行任务的持久化和集群环境下的任务同步。 1. **Spring与Quartz的集成**:...
基于Spring的Quartz动态定时任务增删改查,代码简洁。后端采用SpringMvc+Spring+Mybatis+Quartz,前端采用Bootstrap框架,数据库采用MySQL;完成定时任务动态任务初始化,增删改查
Spring和Quartz是两个强大的工具,可以协同工作来实现动态管理的定时任务。本文将深入探讨如何利用Spring框架和Quartz库创建和管理这些任务。 **Spring框架** 是一个广泛应用的Java企业级开发框架,它提供了丰富的...
本Demo以"基于SSM+quartz的定时任务管理"为主题,将展示如何在Spring、SpringMVC和MyBatis(SSM)框架基础上,集成Quartz作为调度引擎,实现高效灵活的定时任务管理。 **1. SSM框架简介** SSM是Spring、SpringMVC...
Spring 3.0 和 Quartz 1.6.0 结合使用是企业级应用中常见的定时任务解决方案。Spring 是一个强大的Java应用程序框架,提供了依赖注入、AOP(面向切面编程)以及众多其他功能,而Quartz则是一个开源的作业调度框架,...
"定时框架spring+quartz"的结合,就是将Quartz的定时功能与Spring的强大集成能力完美融合,为开发者提供了一种高效、灵活的定时任务解决方案。 Spring框架提供了多种方式来管理定时任务,包括使用Spring的`@...
Spring框架结合Quartz库,提供了一种强大而灵活的方式来管理这些定时任务。本项目旨在实现对Quartz定时任务的动态管理,包括添加、停止和恢复等操作。前端采用jQuery和Bootstrap构建,提供用户友好的可视化界面,...
综上所述,Spring + Quartz 动态任务方案提供了一个灵活且高效的方式来管理定时任务。通过 Spring 容器的管理,使得任务的定义和调度变得更加便捷。同时,通过自定义的 `SchedulerService` 接口和其实现,可以实现对...
总之,通过Spring与Quartz的整合,我们可以实现动态的定时任务管理,这在实际业务中非常有用。无论是通过API动态调整,还是利用数据库存储,都能满足不同场景的需求。同时,了解和掌握各个版本间的兼容性以及最佳...
本教程将详细讲解如何利用Spring 4.3.15、Spring MVC 4.3.15和Quartz 2.2,构建一个可管理的定时任务系统,包括任务的暂停、启动、立即执行和重新调度等功能。 一、Spring MVC与Quartz简介 1. Spring MVC:是...
这篇描述提到了一个Spring+Quartz的示例项目,它展示了如何在Spring应用中集成Quartz来实现定时任务。通过提供的博客链接(http://blog.csdn.net/u010397369/article/details/17465649),我们可以了解到具体的操作...
Spring整合Quartz库,使得我们可以方便地在Spring应用中创建、管理和执行定时任务。Quartz是一个开源的作业调度框架,能够安排和执行复杂的定时任务。 在集群环境下,Spring+Quartz的配置需要考虑如何处理多个...
在IT行业中,定时任务是许多系统不可或缺的一部分,用于执行周期性的任务,如数据备份、报告生成或消息通知。本项目“spring+quartz+javamail定时发送邮件”结合了Spring框架、Quartz调度器以及JavaMail API,构建了...
要在Spring 2.0中使用Quartz执行每天定时任务,你需要按照以下步骤进行: 1. 引入依赖:在项目中添加Quartz的库依赖,通常通过Maven或Gradle进行管理。 2. 配置Quartz:在Spring的配置文件(如`applicationContext...
Spring提供了一个轻量级的容器来管理Bean,而Quartz则是一个强大的作业调度库,能够帮助开发者定义和执行定时任务。下面我们将深入探讨这两个技术的结合以及Quartz的相关知识点。 首先,Spring集成Quartz主要通过...
通过这个 "spring+quartz demo",开发者可以快速理解并实践 Spring 和 Quartz 的整合,掌握如何在 Spring 应用中高效地管理和执行定时任务。这个示例项目提供了直接运行的代码,有助于加深对这些概念的理解。