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.
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();