Java Tomcat7中使用Quartz2.2实现定时任务项目代码实例(demo)

在Java中使用Quartz 2.2结合Tomcat 7实现定时任务是一种常见的需求,Quartz是一个强大的定时任务库,能够帮助开发者轻松实现复杂的定时任务调度。以下是一个简单的示例,展示如何在Java Web应用中集成Quartz来执行定时任务。

 
详细文档:Java Tomcat7中使用Quartz2.2实现定时任务项目代码实例(demo)-CJavaPy

1)添加Quartz依赖

首先,确保在你的pom.xml文件中加入Quartz的依赖。这样Maven就能自动下载Quartz库。

<dependencies>
    <dependency>
        <groupId>org.quartz-scheduler</groupId>
        <artifactId>quartz</artifactId>
        <version>2.2.0</version>
    </dependency>
</dependencies>

2)创建定时任务

接下来,创建一个实现了org.quartz.Job接口的类。在这个类中实现你的定时任务逻辑。

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        System.out.println("Hello, Quartz! - executing its JOB at " + new java.util.Date());
    }
}

3)初始化并启动调度器

在Web应用的启动时初始化并启动Quartz调度器。可以通过实现ServletContextListener接口,在Web应用启动和关闭时分别启动和停止调度器。

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

import org.quartz.*;
import org.quartz.impl.StdSchedulerFactory;

public class QuartzListener implements ServletContextListener {

    private Scheduler scheduler;

    @Override
    public void contextInitialized(ServletContextEvent sce) {
        try {
            // 创建调度器
            scheduler = StdSchedulerFactory.getDefaultScheduler();

            // 定义一个触发器
            Trigger trigger = TriggerBuilder.newTrigger()
                    .withIdentity("trigger1", "group1")
                    .startNow()
                    .withSchedule(SimpleScheduleBuilder.simpleSchedule()
                            .withIntervalInSeconds(10) // 每10秒执行一次
                            .repeatForever())
                    .build();

            // 定义一个任务
            JobDetail job = JobBuilder.newJob(HelloJob.class)
                    .withIdentity("job1", "group1")
                    .build();

            // 调度器关联任务和触发器,保证按触发器定义的条件执行任务
            scheduler.scheduleJob(job, trigger);

            // 启动调度器
            scheduler.start();
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }

    @Override
    public void contextDestroyed(ServletContextEvent sce) {
        try {
            if (scheduler != null) {
                scheduler.shutdown();
            }
        } catch (SchedulerException e) {
            e.printStackTrace();
        }
    }
}

4)配置web.xml

最后,在web.xml中注册你的ServletContextListener

<listener>
    <listener-class>your.package.QuartzListener</listener-class>
</listener>


详细文档:Java Tomcat7中使用Quartz2.2实现定时任务项目代码实例(demo)-CJavaPy

posted @ 2024-04-07 19:29  leviliang  阅读(7)  评论(0编辑  收藏  举报