在Tomcat 6中自动执行Quartz Scheduled Job

时间:2014-02-26 16:59:56

标签: java java-ee scheduler

我可以使用Quartz 2 Scheduler在Java中安排程序。我需要在Apache Server启动时启动该调度程序。怎么做?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点。您可以使用带有静态初始化程序块的普通Java类来初始化Quartz计时器。如果您想以JavaEE方式进行,那么您可以使用EJB3.x或Servlets。

使用EJB3.x Singleton的示例 -

import javax.annotation.PostConstruct;
import javax.ejb.Singleton;
import javax.ejb.Startup;

@Startup
@Singleton
public class QuartzTimerBean{
    @PostConstruct
    public void init() {
            ...
            // Start Quartz timer here
            ...
    }

    @PreDestroy
    public void cleanup(){
            ...
            // Clean up Quartz timer
            ...
    }
}

使用ServletContextListener

的示例
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class QuartzTimerListener implements ServletContextListener{

@Override
public void contextInitialized(ServletContextEvent arg0) {
            ...
            // Start Quartz timer here
            ...
}

@Override
public void contextDestroyed(ServletContextEvent arg0) {
            ...
            // Clean up Quartz timer
            ...
}
}

web.xml

<web-app ...>
   <listener>
       <listener-class><fully qualified path>.QuartzTimerListener</listener-class>
   </listener>
</web-app>