Простой пример для Quartz 2.2 и Tomcat 7

Я хочу создать планировщик с Quartz 2.2 в динамическом веб-приложении Java. Я новичок в этой задаче. Я перепробовал все учебники по всему интернету. Я пытаюсь метод прослушивания контекста для инициализации планировщика. Это нене похоже на работу. Программа hello world работает только в общем Java-приложении. для веб-приложения это выглядит сложно.

pom.xml:

    
4.0.0
test.ananth
test-app
war
1.0-SNAPSHOT
test-app Maven Webapp
http://maven.apache.org

    
        org.quartz-scheduler
        quartz
        2.2.1
    
    
        org.apache.tomcat
        servlet-api
        6.0.30
    
    
        log4j
        log4j
        1.2.16
    

    
        org.quartz-scheduler
        quartz-jobs
        2.2.0
    

    
        org.slf4j
        slf4j-api
        1.6.6
    

    
        junit
        junit
        3.8.1
        test
    


    test-app

quartz.properties:

#org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore

# Main Quartz configuration
org.quartz.scheduler.skipUpdateCheck = true
org.quartz.scheduler.instanceName = MyQuartzScheduler
org.quartz.scheduler.jobFactory.class = org.quartz.simpl.SimpleJobFactory
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
#org.quartz.threadPool.threadCount = 5

HelloJob.java:

    package com.test;

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

    public class HelloJob implements Job {

public HelloJob() {
}

public void execute(JobExecutionContext context)
        throws JobExecutionException {

    System.out.println("Hello!  HelloJob is executing.");
}
    }

пакет servlet.java com.test;

import static org.quartz.JobBuilder.newJob;
import static org.quartz.SimpleScheduleBuilder.simpleSchedule;
import static org.quartz.TriggerBuilder.newTrigger;

import javax.servlet.ServletConfig;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServlet;

import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.impl.StdSchedulerFactory;

public class MyServlet extends HttpServlet {

    /**
     * 
     */
    private static final long serialVersionUID = 1567185871113714035L;

    public void init(ServletConfig cfg) {
        String key = "org.quartz.impl.StdSchedulerFactory.KEY";
        ServletContext servletContext = cfg.getServletContext();
        StdSchedulerFactory factory = (StdSchedulerFactory) servletContext
                .getAttribute(key);
        // Scheduler quartzScheduler = factory.getScheduler("MyQuartzScheduler");
        Scheduler sched;
        try {
            sched = factory.getScheduler("MyQuartzScheduler");
            //sched = factory.getScheduler();//MyQuartzScheduler
            sched.start();

            // define the job and tie it to our HelloJob class
            JobDetail job = newJob(HelloJob.class).withIdentity("myJob",
                    "group1").build();

            // Trigger the job to run now, and then every 40 seconds
            Trigger trigger = newTrigger()
                    .withIdentity("myTrigger", "group1")
                    .startNow()
                    .withSchedule(
                            simpleSchedule().withIntervalInSeconds(4)
                                    .repeatForever()).build();

            // Tell quartz to schedule the job using our trigger
            sched.scheduleJob(job, trigger);
        } catch (SchedulerException e) {
            e.printStackTrace();
        }

    }
}

web.xml:




    
        
            quartz:shutdown-on-unload
            false
        
        
            quartz:wait-on-shutdown
            true
        
        
            quartz:start-scheduler-on-load
            true
        
        
            quartz:config-file
            /WEB-INF/quartz.properties
        

        
            
                org.quartz.ee.servlet.QuartzInitializerListener
            
        

        
            com.test.ApplicationStartup
        
        Archetype Created Web Application

Я использую веб-приложение Maven Archtype.

Ответы на вопрос(1)

Ваш ответ на вопрос