2015-10-18 159 views
0

我想在我的網絡應用程序中每五秒鐘發佈一條消息,我正在使用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很新,所以這就是爲什麼我不知道如何解決這個問題。我當然首先搜索了我的問題,但沒有得到太多答案。

回答

2

嘗試在觸發建設者加入forJob(工作)這樣的 -

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

謝謝你的答案,但我已經得到了我的答案。我已經發布了它,看到答案可以告訴我爲什麼? –

+0

謝謝,你的答案也在工作。然而,我不明白爲什麼5秒後打印我的答案2次,而不是一次? –

+0

好吧我重新啓動日食和問題消失了,雖然我找到了我的答案,但你的答案也是正確的。 –

2

我簡直不敢相信我浪費了2個小時沒有理由。 我得到了答案,我只是在另一個文件中創建了一個單獨的HelloJob類,然後它工作,但是當我在我的主類中有類時,它不工作。但我不明白原因,它有什麼不同? 任何人都可以回答這個問題嗎?