转载自:
http://203.208.39.132/search?q=cache:3bY7UNm9RwgJ:jim19770812.blogspot.com/2009/05/listenerquartz.html+spring+quartz+%E5%81%9C%E6%AD%A2%E4%BB%BB%E5%8A%A1&cd=9&hl=zh-CN&ct=clnk&gl=cn&st_usg=ALhdy2-yK86lXbFxGKUryZ9CYsk9d15n6A
先前写过一篇使用Spring实现Quartz任务调度的范例《使用Spring实现Quartz任务调度的范例》
要是工程里不能使用spring的话,这种做法就不合适了,这种情况下可以使用Listener来实现Quartz任务调度。
QuartzServiceListener.java代码如下
package com.demo;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import org.apache.log4j.Logger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.Trigger;
import org.quartz.TriggerUtils;
public class QuartzServiceListener implements ServletContextListener {
private static Logger log = Logger.getLogger(QuartzServiceListener.class);
private static SchedulerFactory schedulerFactory = new org.quartz.impl.StdSchedulerFactory();
private static Scheduler scheduler;
@Override
public void contextDestroyed(ServletContextEvent event) {
try {
scheduler.shutdown();
log.info("停止调度任务");
} catch (SchedulerException e) {
e.printStackTrace();
log.error(e.getMessage(), e);
}
}
@Override
public void contextInitialized(ServletContextEvent event) {
try{
scheduler = schedulerFactory.getScheduler();
JobDetail jobDetail = new JobDetail("name", Scheduler.DEFAULT_GROUP, MyJob.class);
Trigger trigger = TriggerUtils.makeDailyTrigger("[每日自动分析调度任务]", 18, 07);
scheduler.scheduleJob(jobDetail, trigger);
scheduler.start();
log.info(new StringBuilder("启动调度任务").append(trigger.getNextFireTime()));
}catch(Exception e){
e.printStackTrace();
log.error(e.getMessage(), e);
}
}
}
MyJob.java代码如下
package com.demo
import org.apache.log4j.Logger;
public class MyJob {
private static Logger log = Logger.getLogger(MyJob.class);
/**
* 定时执行的任务
*/
public void execute() {
log.info("准备执行调度");
try{
}finally{
log.info("调度执行完成");
}
}
}
最后别忘了在web.xml里加入这个QuartzServiceListener
web.xml
<listener>
<listener-class>com.gdw.scheduler.QuartzServiceListener</listener-class>
</listener>
分享到:
相关推荐
- 运行脚本或主类:启动Quartz调度器并运行示例。 通过学习和运行这个实例,你可以深入理解Quartz的工作原理,并将其应用到自己的项目中,实现定时任务的自动化调度。确保根据你的项目需求调整触发器和作业的设置,...
在Spring框架中集成Quartz库...当Spring应用启动时,Quartz调度器会自动启动并按照预定的计划执行任务。在实际开发中,你可以根据需求调整定时任务的执行周期、并发控制和数据持久化策略,以满足复杂的定时任务需求。
这个例子将向我们展示如何在Spring应用中集成Quartz,以实现自动化的工作流程。 首先,我们需要理解Spring Quartz的核心概念。Quartz是基于Java的任务调度库,它可以独立于Spring运行,但与Spring结合后,可以利用...
Quartz是一款开源的作业调度框架,它允许开发者在Java应用程序中定义和执行复杂的定时任务。在Web应用中集成Quartz,可以实现定时触发各种业务逻辑,例如数据清理、报告生成、邮件发送等自动化操作。 首先,理解...
Spring 和 Quartz 的集成是实现定时任务执行的一种常见方式。Quartz 是一个强大的、完全开源的作业调度框架,它可以被用来创建、调度和执行各种类型的任务。以下是对如何在 Spring 中添加触发器并结合 Quartz 实现...
APScheduler是Quartz在Python中的实现,它提供了多种调度方式,包括基于时间、固定时间点和crontab格式的定时任务,是一款跨平台的任务调度工具。 **APScheduler组件解析** 1. **任务(Job)**:每个任务都有一个...
在上述例子中,我们使用了CronTrigger,并设置了每5秒执行一次任务。 通过上述步骤,可以在Spring框架中成功配置Quartz作业调度器。除了这些基础知识,开发者还需要熟悉Quartz的编程接口、任务的生命周期、错误处理...
使用Quartz进行任务调度通常涉及到更多的配置和初始化步骤,但它提供了更加丰富的功能和更高的灵活性。 #### 五、总结 本文介绍了Java中定时器的基本概念、使用方法以及示例代码,包括 `java.util.Timer` 的基本...
4. **高级定时任务框架**:对于更复杂的定时任务需求,可以考虑使用如Quartz这样的开源框架。这些框架提供了更灵活的时间调度策略以及更强大的任务管理功能。 5. **性能考量**:虽然`java.util.Timer`简单易用,但...
如果在集群环境中,每个实例都会有自己的定时器,可能需要使用分布式调度工具如Quartz或Spring的`@Scheduled`注解来确保任务的一致性。 总的来说,通过`MyTimerTask.java`和`web.xml`文件,我们可以创建一个在...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...
12.2.4. 不使用回调的基于Spring的DAO实现 12.2.5. 基于Hibernate3的原生API实现DAO 12.2.6. 编程式的事务划分 12.2.7. 声明式的事务划分 12.2.8. 事务管理策略 12.2.9. 容器资源 vs 本地资源 12.2.10. 在应用...