Quartz + Tomcat ou Qualquer Servidor de App
Este é um passo a passo de como criar uma aplicação Web que tem uma tarefa agendada. Por exemplo, vamos supor que você tem uma aplicação Web, que eventualmente deve efetuar uma limpeza de dados em uma base. Você pode utilizar o quartz para isso (outra alternativa seria Ejb timer). Vamos la:
1- Baixe o Quartz (http://www.quartz-scheduler.org/)
2- Crie um projeto Web Dinâmico no Eclipse e nas dependencias do mesmo, coloque todas as bibliotecas do Quartz baixadas no passo anterior.
3- Crie as classes abaixo:
3.1- Tarefa
package com.br.infoserver.quartz;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
* Esta classe demonstra uma tarefa que ira ser invocada pelo Quartz
* Tem que implementar a interface Job do Quartz
* @author julianom
*/
public class TarefaExemplo implements Job{
/**
* Metodo que é executado quando a tarefa é invocada
*/
public void execute(JobExecutionContext context)
throws JobExecutionException {
// aqui vai a lógica da tarefa a ser chamada,
// por exemplo, fazer um select no banco e enviar algum dado para uma fila MQ
// Neste exemplo, vai somente imprimir no console a data de hoje no intervalo de 5 segundos
SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy – hh:mm:ss");
System.err.println("Rodou: " + dateFormat.format( new Date() ));
}
}
3.2- Agendador, esta classe será invocada por um servlet na inicialização da aplicação WEB
package com.br.infoserver.quartz;
import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
/**
* Esta é a classe que deve ser invocada e irá disparar a tarefa nos momentos
* determinados
*
* @author julianom
*
*/
public class Agendador {
public static void inicia() throws Exception {
// Detalhes da tarefa
JobDetail job = JobBuilder.newJob(TarefaExemplo.class).withIdentity(
"tarefaAloMundo", "group1").build();
// Gatilho - ou seja, quando irá chamar, neste caso, a cada 5 segundos
Trigger trigger = TriggerBuilder.newTrigger().withIdentity(
"gatilhoAloMundo", "group1").withSchedule(
CronScheduleBuilder.cronSchedule("0/5 * * * * ?")).build();
// Agenda e voa lá!
Scheduler scheduler = new StdSchedulerFactory().getScheduler();
scheduler.start();
scheduler.scheduleJob(job, trigger);
}
}
4- Crie um servlet, este Servlet deverá ser configurado para ser carregado na inicialização da aplicação, eu fiz isso utilizando annotation, dependendo de sua versão de Java, Apache, WebSphere, etc… vai ter que tirar do Servlet e colocar no arquivo web.xml
package com.br.infoserver.quartz.servlet;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.br.infoserver.quartz.Agendador;
/**
* Servlet implementation class QuartzServlet
*/
@WebServlet(
urlPatterns = { "/QuartzServlet" },
initParams = {
@WebInitParam(name = "load-on-startup", value = "2")
})
public class QuartzServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public QuartzServlet() {
super();
try {
Agendador.inicia();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
}
}
Pronto, simples e fácil. Basta efetuar o deploy de sua aplicação em seu servidor, e verá que neste exemplo ele ficará escrevendo a data no SystemOut do mesmo!
Enjoy!

Cara legal o post !
Estou recebendo o seguinte erro
java.lang.ClassNotFoundException: org.quartz.ScheduleBuilder
já coloquei todas as bibliotecas possíveis imagináveis no classPath.
Estou com o msm erro do Molabss…
Se puderem me ajudar agradeço.
Qualquer nvdd posto aqui.
Hi your web-site url: http://jmmwrite.wordpress.com/2012/08/13/quartz-tomcat-ou-qualquer-servidor-de-app/ seems to be redirecting to a completely different website when
I click the homepage link. You might want to
have this checked.