Quartz Scheduler没有运行

时间:2015-10-18 09:56:14

标签: java quartz-scheduler

我想在我的网络应用中每五秒钟后发一条消息,我正在使用Quatz安排此任务。这是我的代码

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>

现在问题是我每次运行代码时它只给出输出

侦听器已初始化

并没有别的,虽然我想要它打印&#34; Hello Quartz&#34;每5秒后,它什么都不打印。我不明白为什么,也没有给我任何例外。我对Quartz很新,所以我不知道如何解决这个问题。我当然用谷歌搜索了我的问题,但没有得到多少答案。

3 个答案:

答案 0 :(得分:4)

尝试在触发器构建器中添加forJob(job),如下所示 -

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

答案 1 :(得分:2)

我无法相信我无缘无故地浪费了2个小时。 我得到了答案,我只是在另一个文件中创建了一个单独的HelloJob类,然后它工作了但是当我在我的主类中有类时它无法正常工作。但我不明白原因,它有什么区别? 任何人都可以回答这个问题吗?

答案 2 :(得分:-1)

或者,为了使用嵌套类成为可能,您只需将其声明为 static