我想在我的網絡應用程序中每五秒鐘發佈一條消息,我正在使用Quatz來安排此任務。這裏是我的代碼Quartz Scheduler not running
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!");
}
}}
和我的web.xml是
<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>
現在的問題是我每次運行該代碼時它給了我唯一的輸出
監聽器初始化
和沒有別的,雖然我希望它每5秒後打印一次「Hello Quartz」,但它不打印任何東西。我不明白爲什麼,也不給我任何例外。我對Quartz很新,所以這就是爲什麼我不知道如何解決這個問題。我當然首先搜索了我的問題,但沒有得到太多答案。
謝謝你的答案,但我已經得到了我的答案。我已經發布了它,看到答案可以告訴我爲什麼? –
謝謝,你的答案也在工作。然而,我不明白爲什麼5秒後打印我的答案2次,而不是一次? –
好吧我重新啓動日食和問題消失了,雖然我找到了我的答案,但你的答案也是正確的。 –