作者: beauty9235 链接:http://beauty9235.javaeye.com/blog/229617 发表时间: 2008年08月08日
声明:本文系JavaEye网站发布的原创博客文章,未经作者书面许可,严禁任何网站转载本文,否则必将追究法律责任!
spring 任务调度总结
参考资料
http://www.ibm.com/developerworks/cn/java/j-quartz/
http://www.opensymphony.com/quartz/download.action
Java的Timer类和OpenSymphony的Quartz调度器是两个流行的调度API。Spring为这两个调度器提供了一个抽象层,可以更容易的使用他们
spring+timer
1 .使用java Timer调度任务
第一步 web.xml
<!--*********************** spring setting ***********************-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/classes/applicationContextTimeTask.xml
</param-value>
</context-param>
第二步 配置applicationContextTimeTask.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<!--
****************使用java Timer调度任务*********************
使用java Timer调度第一步是从java.util.TimerTask派生一个任务
声明本身只是将EmailReportTask放到应用上下文,
并在testBean属性装配TestBean
在调度之前不会做任何事。
-->
<bean id="testBean" class="com.photo.test.TestBean"/>
<bean id="reportTimerTask" class="com.photo.task.EmailReportTask">
<property name="testBean">
<ref bean="testBean"/>
</property>
</bean>
<!--
Spring的ScheduledTimerTimerTask定义了一个定时器任务的运行周期。应该如下装配一个ScheduledTimerTask
timerTask告诉ScheduledTimerTask运行哪个TimerTask,
这里该装配属性指向reportTimerTask的一个引用。
属性period告诉ScheduledTimerTask以怎样的频率调用TimerTask的run()方法。
这个属性以毫秒作为单位,
86400000指定该任务每24小时运行一次
10X1000
属性scheduledTimerTasks 要求一个需要启动的定时器任务列表。
ScheduledTimerTask有一个delay属性, 允许你指定当任务第一次运行之前应该等多久。
如,EmailReportTask的第一次运行延迟5毫秒
-->
<bean id="scheduledReportTask" class="org.springframework.scheduling.timer.ScheduledTimerTask">
<property name="timerTask">
<ref bean="reportTimerTask"/>
</property>
<property name="period">
<value>10000</value>
</property>
<property name="delay">
<value>5000</value>
</property>
</bean>
<!--Spring 的TimerFactoryBean负责启动定时任务。按以下方式在Spring配置文件里声明它-->
<bean class="org.springframework.scheduling.timer.TimerFactoryBean">
<property name="scheduledTimerTasks">
<list>
<ref bean="scheduledReportTask"/>
</list>
</property>
</bean>
</beans>
第三步 相关类的编写
EmailReportTask.java
public class EmailReportTask extends TimerTask {//必需继承TimerTask
Log log= LogFactory.getLog(EmailReportTask.class);
public EmailReportTask() {
}
public void run() {//这个函数是调度任务执行的入口
log.debug("task begin :"+testBean.greeting);
}
private TestBean testBean;//这里实现spring的依赖注入
public void setTestBean(TestBean testBean) {
this.testBean = testBean;
}
}
testBean.java
public class TestBean {
public String greeting="hello,world";
}
spring+Quartz
Quartz 作业调度框架所提供的 API 在两方面都表现极佳:既全面强大,又易于使用。Quartz 可以用于简单的作业触发,也可以用于复杂的 JDBC 持久的作业存储和执行。
第一步 同上
第二步 配置applicationContextTimeTask.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="reportJob" class="org.springframework.scheduling.quartz.JobDetailBean">
<property name="jobClass">
<value>com.photo.task.EmailReportTask2</value>
</property>
<property name="jobDataAsMap">
<map>
<entry key="testBean">
<ref bean="testBean"/>
</entry>
</map>
</property>
</bean>
<!--用它来指定一个工作应以怎样的频率运行,及第一次运行工作前应等多久-->
<bean id="simpleReportTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="startDelay">
<value>3600000</value>
</property>
<property name="repeatInterval">
<value>86400000</value>
</property>
</bean>
<!--
CronTriggerBean允许更精确的控制任务的运行时间。如果要在每天的6:00运行任务可以按照以下方式声明一个CronTriggerBean
0 0 6 * * ?
jobDetail属性告诉触发器调度哪一个工作,属性cronExpression告诉触发器何时触发。一个cron表达式至少有6个由空格分隔的时间元素(最多7个)从左到右元素定义如下
1。秒(0-59)
2。分(0-59)
3。小时(0-23)
4。月份中的日期(1-31)
5。月份(1-12 或 JAN-DEC)
6。星期(1-7 或 SUN-SAT)
7。年份(1970-2099)
每一个元素都可以显示规定的一个值,一个区间(9-14),一个列表(9,12,14)或一个通配符(*)月份中的日期和星期中的日期这两个元素时互斥的一起应该通过设置一个问号(?)来表明不想设置那个字段
对于cronReportTrigger我们设置的cronExpression为 0 0 6 * * ?可以读作任意月份任何日期的6时0分0秒执行触发器
-->
<bean id="cronReportTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean">
<property name="jobDetail">
<ref bean="reportJob"/>
</property>
<property name="cronExpression">
<value>0/5 * * * * ?</value>
</property>
</bean>
<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="triggers">
<list>
<ref bean="cronReportTrigger"/>
</list>
</property>
</bean>
</beans>
第三步 相关类的编写
EmailReportTask2.java
public class EmailReportTask2 extends QuartzJobBean {
Log log = LogFactory.getLog(EmailReportTask.class);
public EmailReportTask2() {
}
//这个函数是调度任务执行的入口
protected void executeInternal(JobExecutionContext jobExecutionContext) throws org.quartz.JobExecutionException {
log.debug("task 2 begin :" + testBean.greeting);
}
private TestBean testBean;//这里实现spring的依赖注入
public void setTestBean(TestBean testBean) {
this.testBean = testBean;
}
}
TestBean.java 同上
分享到:
相关推荐
本篇文章将深入探讨Spring任务调度的实现方法,以及如何利用Quartz库来增强任务管理能力。 首先,让我们理解Spring的任务调度。Spring通过`@Scheduled`注解提供了一种简单而强大的方式来执行定时任务。这个注解可以...
总结一下,Spring提供了灵活的任务调度方案,涵盖了从简单的定时任务到复杂的批处理作业。了解并熟练掌握这三种方式,可以帮助我们根据项目需求选择合适的任务调度工具,提升应用程序的自动化和效率。
总结来说,Spring的任务调度通过集成JDK的Timer或更高级的Quartz库,为开发者提供了灵活且强大的后台任务执行能力。无论是简单的定时任务还是复杂的调度需求,都能得到很好的满足。在设计和实现任务调度时,需要注意...
在IT行业中,Spring框架是Java领域最常用的轻量级开源框架之一,它的功能强大且全面,其中就包括了定时任务调度。本篇文章将探讨如何在Spring中实现定时调度,并将调度信息持久化到数据库中,这在实际业务场景中非常...
JBPM3.2与Spring的整合主要是为了实现任务调度的功能,这在企业级应用中是非常重要的,因为它能够自动化执行定时任务,如流程启动、数据同步、报告生成等。在JBPM3.1.x版本中,通过SpringModules提供的`spring-...
在Spring框架中,任务调度是一项重要的功能,它允许开发者安排任务在特定的时间点或周期性地执行。Quartz是一个流行的任务调度库,被广泛用于Java应用程序中,包括Spring项目。在本篇中,我们将深入探讨如何使用...
总结来说,SSM框架结合任务调度管理,能够构建出高效、可扩展的Web应用,不仅能够处理常规的业务逻辑,还能灵活地应对定时任务和大数据处理等复杂场景。而"Scientific"文件可能揭示了这个项目在科学计算领域的应用,...
【标题】:基于Spring Boot和Quartz的分布式任务调度系统 在现代企业级应用中,任务调度是一项重要的功能,用于按预定的时间间隔执行特定的任务,例如数据同步、报表生成、清理过期数据等。本项目名为“schedule-...
总结来说,Java实现任务调度是一个复杂但功能强大的过程,它不仅可以独立使用Quartz实现,还可以通过与Spring框架的整合来提升开发效率和应用性能。通过熟悉Quartz和Spring的相关知识,开发者可以构建出高效、灵活且...
Spring Quartz 是一个强大的开源作业调度框架,用于在Java应用程序中实现定时任务...这个"spring quartz java任务调度 完整 可执行"的压缩包文件可能包含了所有必要的配置文件、Job类和示例代码,帮助你快速上手实践。
总结起来,Spring动态定时调度任务通过结合Quartz和Spring的集成,实现了任务执行时间的灵活性。用户可以根据需求动态地调整任务的触发时间和频率,而无需修改代码或重启服务。这大大提高了系统的可扩展性和适应性,...
总结来说,构建基于Spring的异步任务处理系统是一个综合了数据库设计、任务调度、并发执行和故障恢复的过程。通过合理的设计和配置,我们可以实现一个既高效又易于维护的异步任务处理平台,满足复杂业务场景的需求,...
总结来说,Spring与Quartz的结合为开发者提供了强大的任务调度能力。通过合理的配置和编程,我们可以创建出满足各种需求的定时任务,从而提升系统的自动化水平和业务处理能力。在实际开发中,要充分理解和利用这两个...
Spring Quartz 调度器是Java开发中常用的一种任务调度框架,它结合了Spring框架的强大功能与OpenSymphony的Quartz库,使得开发者能够轻松地在应用中添加定时任务。在myEclipse环境中,借助Tomcat服务器和JDK运行环境...
Spring 任务调度是Spring框架中的一个强大特性,它允许开发者定义和管理计划任务,以便在特定的时间点自动执行。在本例中,我们看到的是如何使用Spring与Quartz库集成来实现任务调度。 1. **Quartz库**:Quartz是...
虽然这里提到的标签是"spring",但Spring Integration和Spring Batch也提供了任务调度功能。Spring Integration主要用于企业级应用集成,其`IntegrationFlow`可以通过`@InboundChannelAdapter`和`@CronTrigger`实现...
### 分布式任务调度系统调研 #### JobX **概述** JobX作为opencron的升级版,是一款专为Linux环境设计的定时任务调度系统,它不仅具备强大的定时任务管理功能,还集成了Linux实时监控与WebSSH等功能,极大地提高...
总结来说,Spring Task和Zookeeper结合的Taroco-Scheduler项目为分布式环境提供了强大的任务调度能力。它利用Spring Task的易用性和灵活性定义任务,借助Zookeeper实现分布式协调和任务分配,从而构建了一个可靠的...
在本文中,我们将深入探讨如何在Spring 4.2.2框架中集成Quartz 2.2.2,实现高效的任务调度。Quartz是一个开源的作业调度框架,它允许开发者安排任务以按照预设的时间间隔运行。而Spring框架是Java企业级应用开发的...
通过上述配置,我们可以在Spring2.5项目中实现复杂的定时任务调度功能。需要注意的是,在实际应用中还需要根据具体需求对配置进行适当的调整。此外,Spring框架后续版本还提供了更多高级特性和支持,例如Spring Boot...