Search code examples
javaquartz-scheduler

Quartz Scheduler not running


I wanted to post a message after every five seconds in my web app, i am using Quatz to schedule this task. Here's my Code

public class InvoiceGenerationSchedular implements ServletContextListener {

@Override
public void contextDestroyed(ServletContextEvent arg0) {
    System.out.println("Listener is off");
}

@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
    System.out.println("Listener initialized.");

    JobDetail job = JobBuilder.newJob(HelloJob.class)
            .withIdentity("dummyJobName", "group1").build();
    Trigger trigger = TriggerBuilder
            .newTrigger()
            .withIdentity("dummyTriggerName", "group1")
            .withSchedule(

    CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();

            //schedule it
    Scheduler scheduler;
        try {
            scheduler = new StdSchedulerFactory().getScheduler();               
            scheduler.start();
            scheduler.scheduleJob(job, trigger);

        } catch (SchedulerException e) {                    
            e.printStackTrace();            
        }

}

class HelloJob implements Job
{

    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.out.println("Hello Quartz!");            
    }   
}}

and my web.xml is

    <servlet>
        <servlet-name>InvoiceGenerationServlet</servlet-name>
        <servlet-class>InvoiceGenerationSchedular</servlet-class>
</servlet>  
<servlet-mapping>
    <servlet-name>InvoiceGenerationServlet</servlet-name>
    <url-pattern>/InvoiceGenerationServlet</url-pattern>
</servlet-mapping>  
<listener>
        <listener-class>InvoiceGenerationSchedular</listener-class>
</listener>

Now the Problem is every time i run the code it gives me only The output

Listener Initialized

and nothing else , though i wanted it to print "Hello Quartz" after every 5 seconds but it prints nothing. I don't understand why, doesn't give me any exception either. I am very new to Quartz so that's why i don't know how to solve this problem . I of-course googled my problem first but didn't get much answer.


Solution

  • Try adding forJob(job) in your trigger builder like this -

    TriggerBuilder
            .newTrigger()
            .withIdentity("dummyTriggerName", "group1")
            .forJob(job)//<--- this line is the new addition
            .withSchedule(
             CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();