Servlet ou Action programada

3 respostas
allan.tavares

Boa Noite,
Sou novo com java , e me surgiu uma dúvida …tenho um software que fica analisando o vecto de contratos , bom a data de vecto fica no BD ,então eu criei uma action que vai pegar esses contratos que estão para vencer em X dias e jogo em uma lista,para mostrar quando o usuário logar no sistema…em seguida eu envio alguns dados desse contrato para o responsável por e-mail usando o java mail avisando que o contrato vai vencer em X dias.
A questão é …essa action eu queria automatiza-la,quero executa-la sem depender do usuário logar no sistema pode ser com servelt também …mas não tenho idéia de como fazer , alguém tem alguma dica?

Desde já agradeço,

3 Respostas

walacy

pela sua dúvida, acho que o Quartz resolve o seu problema…

dá uma olhada nisso… :wink:

http://www.opensymphony.com/quartz

Abraço!

allan.tavares

Ok Amigão, dei uma olhada da documentação acho que resolve mesmo meu problema , vou tentar fazer e aí informo os resultados.

Att

allan.tavares

Bom, se interessar para alguém usei o quartz e funcionou blz ...fiz da seguinte forma:

Tenho uma classe EnviarEmail que implementa org.quartz.Job , crio a estrutura para o envio de e-mails em metodo EnviarEmail e chamo o esse metodo em execute.
Depois Criei a classe TarefasAgendadas e aí quando crio o objeto job passo a classe que EnviarEmail ....ficou assim:

import java.util.Date;

import org.quartz.CronTrigger;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

public class TarefasAgendadas {
public void run() throws Exception {

//Primeiro temos de obter uma referência para o agendador
SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();

// Agenda os trabalhos antes de chamar sched.start()

// Tarefa 1 é executada todos os dias de Segunda a Sexta as 16:10
JobDetail job = new JobDetail("job1", "group1", EnviarEmail.class);
CronTrigger trigger = new CronTrigger("trigger1", "group1", "job1", "group1",
"0 10 16pm ? * MON-FRI");
sched.addJob(job, true);
Date ft = sched.scheduleJob(trigger);

// Tarefa 2 é executada a cada 20 segundos
job = new JobDetail("job2", "group1", EnviarEmail.class);
trigger = new CronTrigger("trigger2", "group1", "job2",
"group1", "0/20 * * * * ?");
sched.addJob(job, true);
ft = sched.scheduleJob(trigger);

sched.start();

//sched.shutdown(true);

}
}

Só tive uns problemas com o sched.shutdown(true); porque estou chamando a Action no init do Tomcat ele executava uma vez e depois matava ,mas resolvi tirar e agora está funcionando....só espero que isso não venha consumir muita memória :shock: ,vou continuar testando.

Vlw[code]

Criado 31 de março de 2010
Ultima resposta 6 de abr. de 2010
Respostas 3
Participantes 2