- 浏览: 313821 次
- 性别:
- 来自: 山西太原
-
文章分类
最新评论
-
A741841403:
core-renderer-CN.jar这个包是怎么引入的啊, ...
flying saucer 中文不显示、以及中文换行的问题解决 -
A741841403:
您好,能提供下,中文字体换行包的jar文件吗
flying saucer 中文不显示、以及中文换行的问题解决 -
nightw13h:
楼主 我也遇到了这个问题 照你的套路也把问题解决了 当时没 ...
maven 单元测试 Absent Code attribute in method that is not native or abstract in cl -
devilyard:
借地请教个问题:fatal: open /dev/null o ...
msysGit 安装后的配置 -
tiancai2:
如果在action中定义不是string类型的,而是一个Per ...
Struts2 、jquery之ajaxfileupload异步上传插件
package com.lec.util.job; import java.text.ParseException; import java.util.Date; import java.util.HashMap; import org.quartz.CronTrigger; import org.quartz.Job; import org.quartz.JobDetail; import org.quartz.Scheduler; import org.quartz.SchedulerException; import org.quartz.SchedulerFactory; import org.quartz.SimpleTrigger; import org.quartz.Trigger; import org.quartz.impl.StdSchedulerFactory; import com.lec.assurance.utils.StringHandler; /** * CronTrigger任务调度器 * @author lcy * Dec 1, 2011 */ public class CronTriggerRunner { private static SchedulerFactory sf = new StdSchedulerFactory(); /** * 根据任务名和任务组名查询一个任务 * @param jobName * @param jobGroupName * @return * @throws SchedulerException */ public static JobDetail getJob(String jobName,String jobGroupName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); JobDetail jobDetail=sched.getJobDetail(jobName, jobGroupName); if(jobDetail != null){ return jobDetail; } return null; } /** * 添加一个CronTrigger定时任务 * @param jobName 任务名 * @param jobGroupName 任务组名 * @param triggerName 触发器名 * @param triggerGroupName 触发器组名 * @param job 任务 * @param time 时间设置,参考quartz说明文档 * @param params 传递参数 * @throws SchedulerException * @throws ParseException */ public static void addJob(String jobName,String jobGroupName,String triggerName, String triggerGroupName,String time,HashMap<String,Object> params, Job jobClass) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); JobDetail jobDetail = new JobDetail(jobName, jobGroupName, jobClass.getClass());//任务名,任务组,任务执行类 if(params != null){ jobDetail.getJobDataMap().put("params",params); } //触发器 CronTrigger trigger = new CronTrigger(triggerName, triggerGroupName);//触发器名,触发器组 trigger.setCronExpression(time);//触发器时间设定 sched.scheduleJob(jobDetail,trigger); if(!sched.isShutdown()) sched.start(); } /** * 添加一个SimpleTrigger定时任务 * @param jobName 任务名 * @param jobGroupName 任务组名 * @param triggerName 触发器名 * @param triggerGroupName 触发器组名 * @param startTime 开始时间 * @param repeatInterval 间隔时间 * @param repeatCount 调用次数 * @param jobClass 任务 * @param params 传递参数 * @throws SchedulerException */ public static void addJob(String jobName,String jobGroup, String triggerName,String triggerGroup,Date startTime, Integer repeatInterval,Integer repeatCount,Job jobClass, HashMap<String,Object> params) throws SchedulerException{ JobDetail jobDetail = new JobDetail(jobName, jobGroup, jobClass.getClass()); if(params != null){ jobDetail.getJobDataMap().put("params",params); } //触发器 SimpleTrigger simpleTrigger = new SimpleTrigger(triggerName, triggerGroup); //设置开始时间 simpleTrigger.setStartTime(startTime); //设置间隔时间 simpleTrigger.setRepeatInterval(repeatInterval); //设置调用次数 simpleTrigger.setRepeatCount(repeatCount); Scheduler sched = sf.getScheduler(); sched.scheduleJob(jobDetail,simpleTrigger); if(!sched.isShutdown()) sched.start(); } /** * 根据任务名和任务组名修改任务的触发时间 * @param jobName 任务名 * @param jobGroupName 任务组名 * @param time * @throws SchedulerException * @throws ParseException */ public static void modifyJobTime(String jobName,String jobGroupName,String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); Trigger[] trigger = sched.getTriggersOfJob(jobName,jobGroupName); if(trigger != null){ for(int i=0;i<trigger.length;i++){ ((CronTrigger)trigger[i]).setCronExpression(time); sched.resumeTrigger(trigger[i].getName(),trigger[i].getGroup()); } } } /** * 根据触发器名修改一个任务的触发时间 * @param triggerName触发器名 * @param triggerGroupName触发器组名 * @param time * @throws SchedulerException * @throws ParseException */ public static void modifyTriggerTime(String triggerName,String triggerGroupName, String time) throws SchedulerException, ParseException{ Scheduler sched = sf.getScheduler(); Trigger trigger = sched.getTrigger(triggerName,triggerGroupName); if(trigger != null){ //修改时间 ((CronTrigger)trigger).setCronExpression(time); //重启触发器 sched.resumeTrigger(triggerName,triggerGroupName); } } /** * 移除任务 * @param jobName任务名 * @param jobGroupName任务组名 * @param triggerGroupName触发器组名 * @throws SchedulerException */ public static void removeJob(String jobName,String jobGroupName,String triggerGroupName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); String[] triggerNames = sched.getTriggerNames(triggerGroupName); if(triggerNames!=null){ for(int i=0;i<triggerNames.length;i++){ sched.pauseTrigger(triggerNames[i],triggerGroupName);//停止触发器 sched.unscheduleJob(triggerNames[i],triggerGroupName);//移除触发器 } } sched.deleteJob(jobName,jobGroupName);//删除任务 } /** * 移除一个任务 * @param jobName任务名 * @param jobGroupName任务组名 * @param triggerName触发器名 * @param triggerGroupName触发器组名 * @throws SchedulerException */ public static void removeJob(String jobName,String jobGroupName, String triggerName,String triggerGroupName) throws SchedulerException{ Scheduler sched = sf.getScheduler(); sched.pauseTrigger(triggerName,triggerGroupName);//停止触发器 sched.unscheduleJob(triggerName,triggerGroupName);//移除触发器 sched.deleteJob(jobName,jobGroupName);//删除任务 } /** * 停止一个任务 需要注意的是:这里停止的job必须是实现InterruptableJob的 * @param jobName * @param jobGroupName * @throws SchedulerException */ public static void stopJob(String jobName,String jobGroupName) throws SchedulerException { Scheduler sched = sf.getScheduler(); sched.interrupt(jobName, jobGroupName); } /** * 计算时间表达式 * @param second 秒 * @param minute 分 * @param hour 时 * @param day 日期 * @param month 月份 * @param week 星期 * @param year 年份 * @param isContactYear 是否包括年份 * @return */ public static String getCexpress(String second,String minute,String hour, String day,String month,String week,String year,boolean isContactYear) { String cexpress=""; //秒,默认为"0" 取值范围:0-59 if(StringHandler.isValidStr(second)){ cexpress+=Integer.parseInt(second)+" "; }else{ cexpress+="0 "; } /** * 分 取值范围:0-59 * 默认为"*" 表示每一分钟 * 如果是0 12 表示整12:00触发 * 如果是0/5 12 表示在每天下午12点到12:55期间的每5分钟触发 , * 如果是0-5 12 表示12:00到12:05期间的每1分钟触发 * 如果是10,15 12 表示12:10和12:15触发 */ if(StringHandler.isValidStr(minute)){ cexpress+=minute+" "; }else{ cexpress+="* "; } /** * 小时 取值范围:0-23 * 默认为"*" 表示每一个小时 * 如果是0 表示凌晨触发 * 如果是0-5 表示凌晨到5:00期间 * 如果是10,15 表示10:00和15:00触发 */ if(StringHandler.isValidStr(hour)){ cexpress+=hour+" "; }else{ cexpress+="* "; } /** * 日期 取值范围:1-31 * 默认为"*" 表示每天 * 如果是15 表示每个月的15号 * 如果是L 表示每个月最后一天 * 注:在指定了星期的时候,把日期这里设置为"?" */ if(StringHandler.isValidStr(day)){ cexpress+=day+" "; }else{ cexpress+="* "; } /** * 月份 取值范围:1-12 * 默认为"*" 表示每个月 * 如果是 12 表示12月份 */ if(StringHandler.isValidStr(month)){ cexpress+=month+" "; }else{ cexpress+="* "; } /** * 星期 取值范围:1-7 MON,TUE,WED,THU,FRI,SAT,SUN 其中1表示星期日,以此类推 * 默认为"?" * 如果是WED 表示每个星期三 * 如果是MON-FRI 表示星期一到星期五 * 如果是6L 表示每月最后一个星期五 * 如果是6#3 表示每月第三个星期五 */ if(StringHandler.isValidStr(week)){ cexpress+=week+" "; }else{ cexpress+="? "; } //如果包括年份 if(isContactYear){ /** * 年份 取值范围:1970-2099 * 默认值为空 * 如果是2010 表示只有2010年触发时间 * 如果是2010,2020 表示只有2010 */ if(StringHandler.isValidStr(year)){ cexpress+=year; } } return cexpress; } public static void main(String [] args){ try { /*--------------------创建一个指定时间执行的job-----------------------*/ JobDetail jobDetail = new JobDetail("fundsrecord_jobname_folkholdersId1", "fundsrecord_jobgroupname_folkholdersId1",FundsrecordJob.class); // ①-1:创建CronTrigger,指定组及名称 CronTrigger cronTrigger = new CronTrigger("fundsrecord_triggername_folkholdersId1", "fundsrecord_triggergroupname_folkholdersId1"); // ①-2:定义Cron表达式 String timeexp = ""; String second = "0"; String minute = "15"; String hour = "0"; String day = "L";//当月的最后一天 String month = ""; String week = "?"; month = "6,12"; timeexp = getCexpress(second, minute, hour, day, month, week, null, false); if(!"0 * * * * ?".equals(timeexp)){//如果没有设置时间则不执行 CronExpression cexp = new CronExpression(timeexp); // ①-3:设置Cron表达式 cronTrigger.setCronExpression(cexp); Scheduler scheduler = sf.getScheduler(); scheduler.scheduleJob(jobDetail, cronTrigger); scheduler.start(); } /*--------------------创建一个间隔一定时间执行的job-----------------------*/ String jobName = "fundsrecord_jobname_folkholdersId2"; String jobGroupName = "fundsrecord_jobgroupname_folkholdersId2"; String triggerName = "fundsrecord_triggername_folkholdersId2"; String triggerGroupName = "fundsrecord_triggergroupname_folkholdersId2"; Date beginTime = new Date(System.currentTimeMillis() + 60000L);//当前时间过60秒钟后开始 Integer repeatInterval = 5000;//以毫秒为单位 Integer repeatCount = 0; HashMap<String, Object> map = new HashMap<String,Object>(); map.put("folkholdersId", "2"); try { CronTriggerRunner.addJob(jobName,jobGroupName,triggerName, triggerGroupName,beginTime,repeatInterval, repeatCount,new FundsrecordJob(),map); } catch (SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (Exception e) { e.printStackTrace(); } } }
package com.lec.util.job; import java.util.HashMap; import org.quartz.InterruptableJob; import org.quartz.JobDataMap; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; import org.quartz.SchedulerException; import org.quartz.UnableToInterruptJobException; /** * 任务调度器 * @author lcy * May 24, 2011 */ public class FundsrecordJob implements InterruptableJob { @Override public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap map = context.getMergedJobDataMap(); Object obj = map.get("params"); if(obj != null ){ HashMap<String,Object> params = (HashMap<String,Object>)obj; dojob();//在这个任务调度器里面需要执行的方法 Long folkholdersId = Long.parseLong((String)params.get("folkholdersId")); try { CronTriggerRunner.stopJob("fundsrecord_jobname_folkholdersId"+folkholdersId, "fundsrecord_jobgroupname_folkholdersId"+folkholdersId);//停止本次job } catch (SchedulerException e) { // TODO Auto-generated catch block e.printStackTrace(); } } } public void interrupt() throws UnableToInterruptJobException { } }
发表评论
-
java_时间戳与Date_相互转化
2014-10-20 10:07 2204时间戳是指文件属 ... -
java实现的图片缩放 压缩 裁剪工具!找了很久,市面上再也找不到比它缩放效果还好的代码了
2014-09-15 09:30 1623转载:http://springmvc-springd ... -
百分比计算
2014-09-02 17:40 979private static String getPerce ... -
java 过滤 html
2014-08-05 10:49 604public static String Html2Text ... -
表情替换
2014-07-21 13:28 878/** * 表情替换 * * make ... -
java自定义annotation
2014-07-14 13:37 721转:http://blog.csdn.net/lif ... -
java 字符串编码转换
2014-06-09 10:49 814public class ChangeCharset { ... -
图片工具类, 图片水印,文字水印,缩放,补白等
2014-05-25 15:17 1023package org.img; import jav ... -
字符串每隔指定长度插入指定字符串
2014-05-23 01:57 1675/** * 字符串每隔指定长度插入指定字符串 * ... -
解决:在点击用户退出登录时,再按浏览器的后退按钮,仍然能够看到之前的页面
2014-05-14 23:18 8848需要在服务器返回的response header里面 ... -
flying saucer 中文不显示、以及中文换行的问题解决
2014-05-13 11:11 33921首先下载官方的 iText-2.0.8.jar, 这是导出 ... -
Nginx + Memcached + Tomcat 集群负载均衡
2014-01-23 16:27 1063Tomcat准备 使用的Tomcat自行准备 下载 ... -
java反射
2014-01-13 09:56 766转:http://guntong.iteye.co ... -
在线调用google翻译
2013-10-29 15:11 3315转:http://mylfd.itey ... -
Java线程的生命周期
2013-10-29 14:57 708当线程被创建并 启动之后,它既不是一启动就进入执行状态 ... -
学习Java注解Annotation
2013-10-28 11:08 956转:http://tomcat-oracle.ite ... -
三步学会Java Socket编程
2013-10-14 17:39 793第一步 充分理解Socket 1.什么是socket 所 ... -
java synchronized 详解
2013-06-01 20:37 769Java语言的关键字,当它用来修饰一个方法或者一个代码块的时 ... -
java中byte,String,InputStream之间的转换
2013-05-15 16:11 1137import java.io.ByteArrayIn ... -
java 生成指定范围 随机数 不重复
2013-01-23 14:26 1535package org.xh.rand; import ...
相关推荐
Quartz 提供了一套丰富的 API 和支持,可以方便地与 Spring 框架集成,实现灵活的定时任务调度。 在 Spring 中集成 Quartz,首先需要创建一个 Java 类作为定时任务的执行体,例如 `MyJob` 类。这个类通常包含一个...
Quartz.Net是一个强大的任务调度框架,它在.NET环境中被广泛应用,尤其在需要执行定时任务的系统中。Quartz.Net的设计灵感来源于Java的Quartz库,它允许开发者灵活地定义和管理作业(Jobs)以及触发器(Triggers),...
Spring框架和Quartz是两个广泛使用的工具,它们可以协同工作以实现复杂和灵活的任务调度。本篇文章将深入探讨如何使用Spring与Quartz结合来创建一个任务调度的小例子。 首先,Spring是一个开源的Java企业级应用开发...
Quartz是Java领域一款强大的开源任务调度框架,它允许开发者定义和执行复杂的任务调度策略。在"quartzDemo任务调度例子"中,我们将探讨如何利用Quartz实现Java应用程序中的定时任务。 1. **Quartz简介** Quartz是...
Quartz是Java领域的一款强大的开源任务调度框架,广泛应用于企业级应用系统中,用于执行定时或周期性的任务。在这个"quartz1.5.0 任务调度demo"中,我们将会探讨如何使用Quartz实现任务的增删改功能,以及其三大核心...
Spring中的任务调度是实现应用程序自动化运行任务的重要工具,而Quartz是Java领域广泛使用的开源任务调度框架。在本文中,我们将深入探讨如何在Spring中集成Quartz进行任务调度,并通过一个简单的示例来理解其工作...
Quartz任务调度器是一款强大的开源任务调度框架,广泛应用于Java应用程序中,用于自动化定时任务的执行。它提供了灵活的任务调度机制,使得开发者可以方便地定义、安排和执行各种任务。在与Spring框架整合后,Quartz...
Spring框架作为Java领域广泛使用的轻量级框架,提供了与第三方库Quartz的整合,使得开发者能够轻松地在Spring应用中实现复杂的定时任务调度。Quartz是一款开源的作业调度框架,支持丰富的调度策略,可以满足各种定时...
Quartz.NET是一个强大的开源作业调度框架,用于在.NET环境中创建和执行定时任务。它提供了高度灵活的调度功能,使得开发者可以轻松地定义和控制任务的执行时间。在"Quartz.net作业调度自定义定时执行任务多任务执行...
本篇文章将深入探讨如何使用Quartz在Java应用程序中实现任务调度。 Quartz库提供了一个灵活的API,可以创建、调度和管理任务,这些任务被称为Job。每个Job都与一个Trigger关联,Trigger定义了何时启动Job。在Java...
本“quartz任务调度框架简单实用小demo”旨在帮助开发者快速理解和应用Quartz。 1. **Quartz基本概念** - **Job**: 任务的基本单元,代表一个需要执行的工作。 - **Trigger**: 触发器,决定Job何时被执行。 - **...
Quartz.NET是一个开源的任务调度框架,它允许开发者在.NET环境中创建、安排和执行各种类型的任务。这个系统的主要目的是实现应用程序的后台任务自动化,比如定期数据备份、清理过期记录、发送邮件等。在"任务调度...
【标题】:基于Spring Boot和Quartz的分布式任务调度系统 在现代企业级应用中,任务调度是一项重要的功能,用于按预定的时间间隔执行特定的任务,例如数据同步、报表生成、清理过期数据等。本项目名为“schedule-...
**C#基于Quartz任务调度系统** 在软件开发中,任务调度是一项重要的功能,它允许开发者安排任务在特定时间执行,比如数据同步、定时备份、报告生成等。Quartz是一款强大的开源任务调度库,广泛应用于Java和.NET生态...
Quartz是Java中一个强大的开源任务调度库,它允许开发者定义和执行短时或周期性的任务。这个经典例子展示了如何在Java项目中集成并使用Quartz进行任务自动调度。通过以下内容,我们将深入理解Quartz的基本概念、配置...
### Quartz任务调度管理 #### 一、任务调度基础概念 任务调度是指系统按照预先设定的时间规则来自动执行特定任务的功能。这种机制广泛应用于各种场景,例如数据备份、定期检查资源状态、发送邮件通知等。 ##### ...
与Quartz.NET结合使用,我们可以轻松地将定时任务调度服务包装为一个Windows服务,这样即使在没有用户登录的情况下,也可以持续运行我们的任务调度。 在"基于quartz.net+TopShelf的任务调度源码"中,开发者可能已经...
为了使`QuartzConfig`类在Spring Boot启动时自动执行初始化方法,我们需要在`@Configuration`注解的类上添加`@EnableScheduling`,这将开启Spring的定时任务调度功能: ```java @Configuration @EnableScheduling ...
在Java开发环境中,Quartz被广泛用于实现应用程序的自动化任务调度。这个压缩包“quartz动态定时调度完整代码”提供了使用Quartz进行动态任务调度的示例代码和相关资源。 在Quartz中,核心概念包括Scheduler(调度...