- 浏览: 591105 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (223)
- JavaCore (5)
- JavaWeb (16)
- HTML/CSS (14)
- MySQL (10)
- iBatis (2)
- Struts2 (12)
- OpenSource (18)
- 杂记 (16)
- IDE (10)
- Linux (4)
- Javacript (24)
- Hibernate (21)
- Extjs (1)
- jQuery (19)
- Database (5)
- DesignPattern (7)
- Spring (11)
- DWR (1)
- Hadoop (2)
- PHP (1)
- Flex4 (7)
- Nodejs (1)
- Maven (3)
- Firefox (5)
- SCM (1)
- 服务器架构 (2)
最新评论
-
明明如月:
这个方法不错
解决Failed to execute goal org.apache.maven.plugins -
srhlwdamon:
可是我的为什么解决不了。。。。。。。。。!!
解决Failed to execute goal org.apache.maven.plugins -
di1984HIT:
写的不错。
Memcached 在window下部署和测试示例 -
只为学英语:
正解,十分感谢
解决Failed to execute goal org.apache.maven.plugins -
落雪封:
谢谢,解决了,少导入jar包了
Spring MVC 的json问题(406 Not Acceptable)
了解Quartz体系结构
Quartz对任务调度的领域问题进行了高度的抽象,提出了调度器、任务和触发器这3个核心的概念,并在org.quartz通过接口和类对重要的这些核心概念进行描述:
●Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务,JobExecutionContext类提供了调度上下文的各种信息。Job运行时的信息保存在 JobDataMap实例中;
●JobDetail:Quartz在每次执行Job时,都重新创建一个Job实例,所以它不直接接受一个Job的实例,相反它接收一个Job实现 类,以便运行时通过newInstance()的反射机制实例化Job。因此需要通过一个类来描述Job的实现类及其它相关的静态信息,如Job名字、描 述、关联监听器等信息,JobDetail承担了这一角色。
通过该类的构造函数可以更具体地了解它的功用:JobDetail(java.lang.String name, java.lang.String group, java.lang.Class jobClass),该构造函数要求指定Job的实现类,以及任务在Scheduler中的组名和Job名称;
●Trigger:是一个类,描述触发Job执行的时间触发规则。主要有SimpleTrigger和CronTrigger这两个子类。当仅需触 发一次或者以固定时间间隔周期执行,SimpleTrigger是最适合的选择;而CronTrigger则可以通过Cron表达式定义出各种复杂时间规 则的调度方案:如每早晨9:00执行,周一、周三、周五下午5:00执行等;
●Calendar:org.quartz.Calendar和java.util.Calendar不同,它是一些日历特定时间点的集合(可以简 单地将org.quartz.Calendar看作java.util.Calendar的集合——java.util.Calendar代表一个日历时 间点,无特殊说明后面的Calendar即指org.quartz.Calendar)。一个Trigger可以和多个Calendar关联,以便排除或 包含某些时间点。
假设,我们安排每周星期一早上10:00执行任务,但是如果碰到法定的节日,任务则不执行,这时就需要在Trigger触发机制的基础上使用 Calendar进行定点排除。针对不同时间段类型,Quartz在org.quartz.impl.calendar包下提供了若干个Calendar 的实现类,如AnnualCalendar、MonthlyCalendar、WeeklyCalendar分别针对每年、每月和每周进行定义;
●Scheduler:代表一个Quartz的独立运行容器,Trigger和JobDetail可以注册到Scheduler中,两者在 Scheduler中拥有各自的组及名称,组及名称是Scheduler查找定位容器中某一对象的依据,Trigger的组及名称必须唯 一,JobDetail的组和名称也必须唯一(但可以和Trigger的组和名称相同,因为它们是不同类型的)。Scheduler定义了多个接口方法, 允许外部通过组及名称访问和控制容器中Trigger和JobDetail。
Scheduler可以将Trigger绑定到某一JobDetail中,这样当Trigger触发时,对应的Job就被执行。一个Job可以对应 多个Trigger,但一个Trigger只能对应一个Job。可以通过SchedulerFactory创建一个Scheduler实例。 Scheduler拥有一个SchedulerContext,它类似于ServletContext,保存着Scheduler上下文信息,Job和 Trigger都可以访问SchedulerContext内的信息。SchedulerContext内部通过一个Map,以键值对的方式维护这些上下 文数据,SchedulerContext为保存和获取数据提供了多个put()和getXxx()的方法。可以通过Scheduler# getContext()获取对应的SchedulerContext实例;
●ThreadPool:Scheduler使用一个线程池作为任务运行的基础设施,任务通过共享线程池中的线程提高运行效率。
Job有一个StatefulJob子接口,代表有状态的任务,该接口是一个没有方法的标签接口,其目的是让Quartz知道任务的类型,以便采用 不同的执行方案。无状态任务在执行时拥有自己的JobDataMap拷贝,对JobDataMap的更改不会影响下次的执行。而有状态任务共享共享同一个 JobDataMap实例,每次任务执行对JobDataMap所做的更改会保存下来,后面的执行可以看到这个更改,也即每次执行任务后都会对后面的执行 发生影响。
正因为这个原因,无状态的Job可以并发执行,而有状态的StatefulJob不能并发执行,这意味着如果前次的StatefulJob还没有执 行完毕,下一次的任务将阻塞等待,直到前次任务执行完毕。有状态任务比无状态任务需要考虑更多的因素,程序往往拥有更高的复杂度,因此除非必要,应该尽量 使用无状态的Job。
如果Quartz使用了数据库持久化任务调度信息,无状态的JobDataMap仅会在Scheduler注册任务时保持一次,而有状态任务对应的JobDataMap在每次执行任务后都会进行保存。
Trigger自身也可以拥有一个JobDataMap,其关联的Job可以通过 JobExecutionContext#getTrigger().getJobDataMap()获取Trigger中的JobDataMap。不管 是有状态还是无状态的任务,在任务执行期间对Trigger的JobDataMap所做的更改都不会进行持久,也即不会对下次的执行产生影响。
Quartz拥有完善的事件和监听体系,大部分组件都拥有事件,如任务执行前事件、任务执行后事件、触发器触发前事件、触发后事件、调度器开始事件、关闭事件等等,可以注册相应的监听器处理感兴趣的事件。
表
1 Cron表达式时间字段 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 , - * / 2 分钟 0-59 , - * / 3 小时 0-23 , - * / 4 日期 1-31 , - * ? / L W C 5 月份 1-12 , - * / 6 星期 1-7 , - * ? / L C # 7 年(可选) 空值1970-2099 , - * / Cron表达式的时间字段除允许设置数值外,还可使用一些特殊的字符,提供列表、范围、通配符等功能,细说如下: ●星号(*):可用在所有字段中,表示对应时间域的每一个时刻,例如,*在分钟字段时,表示“每分钟”; ●问号(?):该字符只在日期和星期字段中使用,它通常指定为“无意义的值”,相当于点位符; ●减号(-):表达一个范围,如在小时字段中使用“10-12”,则表示从10到12点,即10,11,12; ●逗号(,):表达一个列表值,如在星期字段中使用“MON,WED,FRI”,则表示星期一,星期三和星期五; ●斜杠(/):x/y表达一个等步长序列,x为起始值,y为增量步长值。如在分钟字段中使用0/15,则表示为0,15,30和45秒,而5/15在分钟字段中表示5,20,35,50,你也可以使用*/y,它等同于0/y; ●L:该字符只在日期和星期字段中使用,代表“Last”的意思,但它在两个字段中意思不同。L在日期字段中,表示这个月份的最后一天,如一月的
31号,非闰年二月的28号;如果L用在星期中,则表示星期六,等同于7。但是,如果L出现在星期字段里,而且在前面有一个数值X,则表示“这个月的最后
X天”,例如,6L表示该月的最后星期五; ●W:该字符只能出现在日期字段里,是对前导日期的修饰,表示离该日期最近的工作日。例如15W表示离该月15号最近的工作日,如果该月15号是星
期六,则匹配14号星期五;如果15日是星期日,则匹配16号星期一;如果15号是星期二,那结果就是15号星期二。但必须注意关联的匹配日期不能够跨
月,如你指定1W,如果1号是星期六,结果匹配的是3号星期一,而非上个月最后的那天。W字符串只能指定单一日期,而不能指定日期范围; ●LW组合:在日期字段可以组合使用LW,它的意思是当月的最后一个工作日; ●井号(#):该字符只能在星期字段中使用,表示当月某个工作日。如6#3表示当月的第三个星期五(6表示星期五,#3表示当前的第三个),而4#5表示当月的第五个星期三,假设当月没有第五个星期三,忽略不触发; ● C:该字符只在日期和星期字段中使用,代表“Calendar”的意思。它的意思是计划所关联的日期,如果日期没有被关联,则相当于日历中所有日期。例如5C在日期字段中就相当于日历5日以后的第一天。1C在星期字段中相当于星期日后的第一天。 Cron表达式对特殊字符的大小写不敏感,对代表星期的缩写英文大小写也不敏感。
发表评论
-
jTidy入门和实践
2012-10-14 21:05 3355测试html代码: <!DOCTYPE ... -
window部署nodeclub 出现问题,跪求支援
2012-05-23 17:29 5823因为操作比文字更具有说服力和把事情说清楚,因此我把自己的操作贴 ... -
net.sf.json.JSONException Property 'data' has no getter method in class 的问题解决
2012-04-11 09:20 23331.异常: net.sf.json.JSONEx ... -
Guava Joiner 用法
2012-03-15 21:18 0package com.github.zhongl.util; ... -
log4jdbc 使用入门
2011-10-21 13:30 2542log4jdbc 可以将占位符与参数全部合并在一起显示,方便直 ... -
log4jdbc 使用入门
2011-10-21 13:27 0log4jdbc 可以将占位符与参数全部合并在一起显示,方便直 ... -
hsqldb起步-2
2011-05-03 22:03 821学习和部署 h2 database 算了, h2 databa ... -
hsqldb起步
2011-05-02 22:17 7121.复制 hsqldb.jar 到 "d:\db&q ... -
[原创]slf4j+logback 的详细配置
2011-03-29 23:43 68271.类库: logback-classic-0.9.28.j ... -
Quartz入门例子
2011-03-26 00:25 1073//给女友打电话是一个job public class Ca ... -
com.mchange.v2.resourcepool.CannotAcquireResourceException: A ResourcePool could
2011-03-04 20:59 10083Spring结合c3p0的时候,出现如下异常: com ... -
c3p0的ComboPooledDataSource
2011-03-04 20:33 4604acquireIncrement -> 5 acqu ... -
commons-logging与log4j的贴心组合
2010-12-30 17:28 907一.查找 LogFactory 的顺序: 1.从系统属性中查 ... -
dbutils的count问题
2010-12-17 20:04 1235/** * 根据车次和座位类型获得对应的已订座位数 ... -
xerces.jar与tomcat的reload出现异常
2010-12-07 19:14 1935xerces.jar将导致tomcat reload异常 ... -
Proxool过程
2010-12-06 23:00 7701.http://proxool.sourceforge.ne ... -
commons.dbutils的BeanHandler数据封装
2010-11-21 17:01 41661.实体: public class Order { p ... -
BeanShell资源和简单例子
2010-10-28 15:12 1552http://www.beanshell.org/manual ... -
JRebel+Tomcat实现热部署
2010-10-17 23:06 3122如题,当修改了类文件,不需要重启tomcat! 1.下 ...
相关推荐
#### 了解Quartz体系结构 Quartz 是一款强大的开源任务调度框架,自2001年发布以来,已经被广泛应用于各种企业级应用中,以解决任务调度的问题。它不仅具备高度的灵活性,同时也保持着相对简单的使用方式,能够满足...
#### 1.3 Quartz体系结构 Quartz 的体系结构主要由以下三个核心组件构成: - **调度器 (Scheduler)**: 作为作业的总指挥,负责管理所有的作业和触发器,并控制它们的执行流程。 - **触发器 (Trigger)**: 作为作业...
在本案例中,"Quartz.NET定时任务例子源代码(C#)" 提供了一个使用C#语言实现的Quartz.NET应用示例,帮助开发者了解如何在实际项目中运用该库。 首先,`MyQuartz.sln` 是Visual Studio的解决方案文件,包含了整个...
#### 二、Quartz的核心概念与体系结构 Quartz的设计围绕三个核心概念展开:**调度器(Scheduler)**、**任务(Job)** 和 **触发器(Trigger)**,它们共同构建了一个高效且灵活的任务调度机制。 - **Job(任务)**:这...
第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们还将对Spring容器一些高级主题进行深入的阐述。 第6章:我们从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的...
在干净的体系结构中,核心是实体。 就我而言,我将实体放在核心程序包中的程序包中。 这些实体将在用例中使用。 就我而言,我的实体通过数据提供者间接在用例WhatsTheTime.java中使用。 注意,用例中使用的那些...
- **类加载器体系结构**:认识Bootstrap ClassLoader、Extension ClassLoader、Application ClassLoader的区别和作用。 - **类的生命周期管理**:掌握类的卸载条件和时机。 ### 4. GUI开发 - **Applet基础知识**:...
《基于SpringBoot的教学资源库源码数据库》是一个典型的Java Web项目,主要采用了SpringBoot框架,结合SSM(Spring、SpringMVC、MyBatis)体系结构,为教学资源的管理和分享提供了一个高效、便捷的平台。这个源码库...
第5章:对Spring容器进行解构,从内部探究Spring容器的体系结构和运行流程。此外,我们还将对Spring容器一些高级主题进行深入的阐述。 第6章:我们从Spring AOP的底层实现技术入手,一步步深入到Spring AOP的...
### JAVA技术体系 #### Java 技术概览 Java 是一种广泛使用的计算机编程语言,具有简单性、面向对象、健壮性、安全性、平台独立性等特点。Java 的核心技术包括 Java Standard Edition (Java SE),Java Enterprise ...
- **jboss目录结构说明**:了解JBoss服务器的目录结构对于部署和调试应用程序非常重要,特别是了解部署应用程序的具体位置。 #### 三、Velcro系统体系介绍 - **3.1 系统模块关系**:Velcro系统由多个模块组成,每个...
掌握RMI(远程方法调用)、RMI/IIOP等远程API,以及CORBA(公共对象请求代理体系结构),可以实现不同平台之间的服务互操作,这对于构建分布式系统尤为关键。 ### 七、Java EE标准与Web容器 熟悉Java EE标准,包括...
而CORBA(Common Object Request Broker Architecture)则是一种面向对象的服务体系结构,支持异构环境下的对象通信。 #### 12. 学习XML相关的API如JAXP、JDOM等。 随着XML成为数据交换的标准格式,掌握如何解析和...
1.4 Spring体系结构 1.5 Spring 3.0的新功能 1.5.1 核心API更新到Java 5. 1.5.2 Spring表达式语言 1.5.3 可通过Java类提供IoC配置信息 1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 ...
1.4 Spring体系结构 1.5 Spring 3.0的新功能 1.5.1 核心API更新到Java 5. 1.5.2 Spring表达式语言 1.5.3 可通过Java类提供IoC配置信息 1.5.4 通用类型转换系统和属性格式化系统 1.5.5 数据访问层新增OXM功能 1.5.6 ...
2. **数据结构与算法**:可能包含链表、栈、队列、树、图等数据结构的实现,以及排序、查找等常见算法。了解和熟练运用这些将提升编程效率和代码质量。 3. **IO流与NIO**:Java的IO流体系包括字节流、字符流,以及...
【Spring 体系结构】 Spring框架主要包含核心容器、数据访问/集成、Web、AOP、工具和其他模块。核心容器是核心,包含beans、core、context和expression等子模块。 【入门案例:IoC】 1. **导入jar包**:为了使用...
- JFinal的插件丰富,例如Shiro安全框架插件、Swagger API文档生成插件、Quartz定时任务插件等,可以帮助开发者快速实现特定功能。 7. **实际应用场景** - JFinal适用于中小型Web项目,尤其适合个人开发者或者小...
大众点评是中国知名的本地生活服务平台,其背后的技术体系涉及到大量的Java技术应用。作为讲师源码,这可能是一份用于教学或培训的代码库,帮助学员理解和学习如何在实际项目中运用Java技术。 首先,Java是一种广泛...
综上所述,这个压缩包可能包含了一个完整的后台系统结构,开发者可以通过解压后快速启动项目,然后根据自身需求进行定制和扩展。文件名称"ahao2"可能是项目主模块或者启动脚本,具体功能需要查看源代码才能了解。在...