- 浏览: 316601 次
- 性别:
- 来自: 济南
文章分类
最新评论
-
poterliu:
太棒了,这正是我要的效果
带复选框(checkbox)的下拉列表 -
no_bao:
a164906480 写道不好意思啊,不少东西,我用的时候就是 ...
java使用Map进行分组统计 -
a164906480:
不好意思啊,不少东西,我用的时候就是转int的时候光报异常。 ...
java使用Map进行分组统计 -
a164906480:
String[] strArr=null;
4 ...
java使用Map进行分组统计 -
a164906480:
问一下你后面的数是怎么加的吗
java使用Map进行分组统计
1 Spring中使用Quartz进行作业调度
Spring提供了支持时序调度(Scheduling)的整合类.现在,时序调度器通过FactoryBean建立,保持着可选的对Timers或者Triggers的引用。更进一步的, 对于Quartz Scheduler和Timer两者存在一个方便的类允许我们调用目标对象(类似于通常的MethodInvokingFactoryBeans)上的某个方法。
1.1 使用JobDetailBean
JobDetail 对象包括了运行一个job所需要的所有信息。 于是Spring提供了一个所谓的JobDetailBean使得JobDetail拥有了一个真实的,有意义的默认值。让我们来看个例子:
<bean name="exampleJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>example.ExampleJob</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="timeout"><value>5</value></entry>
</map>
</property>
</bean>
Job detail bean拥有所有运行job(ExampleJob)的必要信息。通过job的data map来制定timeout。 Job的data map可以通过JobExecutionContext(在运行时刻传递给你)来得到, 但是JobDetailBean也把从job的data map中得到的属性映射到实际job中的属性中去。 所以,如果ExampleJob中包含一个名为timeout的属性,JobDetailBean将自动为它赋值:
package example;
public class ExampleJob extends QuartzJobBean {
private int timeout;
/**
* Setter called after the ExampleJob is instantiated
* with the value from the JobDetailBean (5)
*/
public void setTimeout(int timeout) {
this.timeout = timeout;
}
protected void executeInternal(JobExecutionContext ctx)
throws JobExecutionException {
// do the actual work
}
}
所有Job detail bean中的一些其他的设定对你来说也是可以同样设置的.
注意:使用name和group属性,你可以修改job在哪一个组下运行和使用什么名称。 默认情况下,job的名称等于job detai bean的名称(在上面的例子中为exampleJob)。
1.2 使用MethodInvokingJobDetailFactoryBean
通常情况下,你只需要调用特定对象上的一个方法。你可以使用MethodInvokingJobDetailFactoryBean准确的做到这一点:
<bean id="methodInvokingJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject"><ref bean="exampleBusinessObject"/></property>
<property name="targetMethod"><value>doIt</value></property>
</bean>
上面例子将导致exampleBusinessObject中的doIt方法被调用(如下):
public class BusinessObject {
// properties and collaborators
public void doIt() {
// do the actual work
}
}
<bean id="exampleBusinessObject" class="examples.ExampleBusinessObject"/>
使用MethodInvokingJobDetailFactoryBean你不需要创建只有一行代码且只调用一个方法的job, 你只需要创建真实的业务对象来包装具体的细节的对象。
默认情况下,Quartz Jobs是无状态的,可能导致jobs之间互相的影响。如果你为相同的JobDetail指定两个触发器, 很可能当第一个job完成之前,第二个job就开始了。如果JobDetail对象实现了Stateful接口,就不会发生这样的事情。 第二个job将不会在第一个job完成之前开始。为了使得jobs不并发运行,设置MethodInvokingJobDetailFactoryBean中的concurrent标记为false。
<bean id="methodInvokingJobDetail"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject"><ref bean="exampleBusinessObject"/></property>
<property name="targetMethod"><value>doIt</value></property>
</bean>
注意:默认情况下,jobs在并行的方式下运行。
1.3 使用triggers和SchedulerFactoryBean来包装任务
我们已经创建了job details,jobs。我们回顾了允许你调用特定对象上某一个方法的便捷的bean。 当然我们仍需要调度这些jobs。这需要使用triggers和SchedulerFactoryBean来完成。 Quartz自带一些可供使用的triggers。Spring提供两个子类triggers,分别为CronTriggerBean和SimpleTriggerBean。
Triggers也需要被调度。Spring提供SchedulerFactoryBean来暴露一些属性来设置triggers。SchedulerFactoryBean负责调度那些实际的triggers。
两个例子:
<bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<!-- see the example of method invoking job above -->
<ref bean="methodInvokingJobDetail"/>
</property>
<property name="startDelay">
<!-- 10 seconds -->
<value>10000</value>
</property>
<property name="repeatInterval">
<!-- repeat every 50 seconds -->
<value>50000</value>
</property>
</bean>
<bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="exampleJob"/>
</property>
<property name="cronExpression">
<!-- run every morning at 6 am -->
<value>0 6 * * 1</value>
</property>
</bean>
现在我们创建了两个triggers,其中一个开始延迟10秒以后每50秒运行一次,另一个每天早上6点钟运行。 我们需要创建一个SchedulerFactoryBean来最终实现上述的一切:
bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref local="cronTrigger"/>
<ref local="simpleTrigger"/>
</list>
</property>
</bean>
发表评论
-
xml验证二----java根据xsd验证xml
2013-11-07 09:47 2435xml 转换 xsd 参考 http://51876 ... -
xml验证之----xml转换为xsd(trang.jar)
2013-11-07 09:43 73741、执行环境 Trang的执行环境:JRE1.4+ ... -
swfUpload火狐浏览器firefox不显示上传按钮
2013-10-29 11:01 5242问题描述: 使用swfUpload ... -
Multipart/form-data POST文件上传详解
2013-09-03 18:00 9475Multipart/form-data POST文件上传详解 ... -
quartz报错java.lang.NoSuchMethodError: org.apache.commons.collections.SetUtils.ord
2013-08-19 14:02 1064quartz报错:Caused by: java.lang.N ... -
增加tomcat并发量
2013-08-01 17:44 5927tomcat默认的连接是线程阻塞的,即protocol配置为 ... -
Tomcat并发数优化的方法总结
2013-08-01 14:07 10721,让Tomcat6 中支持Java语言的特性 NIO( N ... -
java使用Map进行分组统计
2013-07-09 14:43 6686用java读取txt文本,并根据ip段分组合计|后面的值,即i ... -
JDBC事务的保存点处理
2013-05-10 09:55 1717JDBC事务的保存点处理 ... -
<s:iterator> 标签补齐循环固定行数
2013-03-21 16:22 2110比如有一公告列表 每页展现 5条 如果不足5条 ... -
在tomcat的catalina.sh文件中添加了jconsole检测内存配置
2013-01-21 10:32 2554在tomcat的catalina.sh文件中添 ... -
java随机数
2013-01-21 10:23 965public static String getRandom ... -
Quartz 动态配置时间及集成配置
2012-11-29 15:04 1564本文转载于: http://sundoct ... -
MyEclipse优化技巧
2012-11-02 11:01 956MyEclipse优化技巧 第一步: ... -
Quartz使用指南(六)-----监听器及存储
2012-10-22 09:10 17121 触发器的监听器和作业的监听器(Trigge ... -
Quartz使用指南(五)-----Cron触发器(CronTrigger)
2012-10-22 09:09 2103<!--[if !supportLists]--> ... -
Quartz使用指南(四)-----触发器(Triggers)
2012-10-19 18:04 31814 触发器(Triggers) 与Job相比,Trig ... -
Quartz使用指南(三)-----标识符、 作业和作业详情(Identifiers&Jobs&JobDetails)
2012-10-19 17:54 1539标识 ... -
Quartz使用指南(二)-----作业和触发器Job&Trigger
2012-10-19 17:49 1832我们可以使Scheduler简单地执行一个实现了Job接 ... -
Quartz使用指南(一)-----Quartz简介
2012-10-19 17:47 2031<!--[endif]--> ...
相关推荐
在 Spring 框架中,Quartz 是一个非常流行的开源作业调度器,可以实现任务的定时执行。在本篇文章中,我们将讨论如何在 Spring 中配置 Quartz,以实现 Java 定时器的功能。 Quartz 介绍 Quartz 是一个开源的作业...
Quartz和Spring-Quartz是两个在Java世界中广泛使用的定时任务管理框架。Quartz是一个开源的作业调度框架,允许应用程序定义和调度任务在特定时间执行。而Spring-Quartz则是Spring框架对Quartz的集成,它使得在Spring...
Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业和触发器的多对多关系,还能把多个作业与不同的...
3. **调度器配置**:`SchedulerFactoryBean`是Spring对Quartz调度器的包装,它管理所有的触发器和任务。在这里,我们将`cron`触发器添加到调度器中,使得任务与触发器关联起来。 接下来,我们看下服务类和服务的...
Spring 中 Quartz 调度器的使用 Spring 中 Quartz 调度器的使用是指在 Spring 框架中使用 Quartz 调度器来实现任务调度。Quartz 是一个功能强大且灵活的开源任务调度器,能够满足复杂的任务调度需求。在 Spring 中...
在Spring框架中,Quartz可以被集成来实现复杂的定时任务调度。本文将深入探讨Quartz的使用,包括其基本概念、配置、API以及在Web应用中的实际应用。 首先,Quartz的核心概念包括Job(作业)、Trigger(触发器)和...
总结起来,`spring-context-support.jar`和`quartz-all-1.6.0.jar`的组合使用,为我们提供了强大的定时任务管理功能,结合Spring的bean管理和Quartz的调度能力,使得在Java应用中实现复杂任务调度变得轻而易举。...
5. **调度器配置**:在Spring配置文件中,使用`<bean>`标签配置SchedulerFactoryBean,通过属性设置Quartz的配置文件、作业和触发器等。 6. **启动调度**:在Spring应用启动时,调用Scheduler的start()方法启动调度...
标题中的"spring-context-support-4.2.2和quartz-2.2.3所需Jar包"涉及到两个关键的Java库:Spring Context Support 4.2.2版本和Quartz Scheduler 2.2.3版本。这两个库在企业级Java应用开发中扮演着重要角色,特别是...
通过Spring的`SchedulerFactoryBean`,可以轻松地在Spring应用上下文中启动和停止Quartz调度器,同时Spring还支持声明式的方式定义Job和Trigger,使得配置更加简洁。 在实际应用中,定时任务通常用于执行后台数据...
在Spring框架中集成Quartz调度器,可以实现定时任务的高效管理。Quartz是一个开源的作业调度框架,它允许程序创建、调度和执行任务。在本示例中,我们将探讨如何在Spring应用中配置和使用Quartz,以及通过示例代码来...
内容需求,依赖弹簧靴石英调度器经过Spring Boot测试(直到1.0.2)1.3.8、1.4.6、1.5.3、1.5.6, (自1.0.3起)1.4.6、1.5.10、1.5.16、1.5.17用法< dependency>< groupId>de.chandre.quartz</ groupId>< artifactId...
标题中的“Spring 2.0 Quartz 执行每天定时任务”是指使用Spring框架的Quartz集成来创建一个每天自动执行的任务。Quartz是一个开源的作业调度框架,它允许开发者定义和调度任务,以便在指定的时间自动运行。在Spring...
这种方式非常简单,开发者只需要在 Spring 配置文件中定义相应的 Bean,就可以使用 Quartz 实现任务调度。 以下是一个简单的示例代码: ```xml <bean id="overdueRecall" class="com.sursen.souba.ddlibserve....
总结起来,"spring3.0+quartz-1.6.0定时"的实现涉及到Spring框架的定时任务支持和Quartz库的结合使用,通过Spring的配置管理Quartz调度器,定义任务和触发器,最后编写具体任务逻辑的Java类。这种组合在实际项目中...
通过 "quartz-spring-demo",开发者可以快速理解如何在 Spring 应用程序中集成和使用 Quartz,从而实现灵活的定时任务调度。这个简单的演示项目是一个学习和实践 Quartz 和 Spring 整合的好起点。
Spring整合Quartz是一款常见的任务调度解决方案,它允许开发者在应用程序中安排定时任务的执行。Quartz是一个开源的作业调度框架,而Spring通过提供一个简洁的API使得与Quartz的集成变得简单。以下是对Spring整合...
在Spring框架中集成Quartz是一款常见的任务调度解决方案,它允许开发者在应用中...通过以上步骤,你就可以在Spring中成功配置并使用Quartz进行任务调度了。注意,实际应用中还需要根据具体需求调整配置和Job的实现。
4. **集群同步策略**:确保在多节点环境中作业的正确调度和执行,可能使用了`org.quartz.impl.cluster.ClusterManager`。 5. **数据库脚本**:为Quartz和Spring Batch创建必要的数据库表,存储作业元数据和执行信息...