Quartz Scheduler não executa ao iniciar aplicação web

7 respostas
J

Tenho os seguintes arquivos na minha configuração

arquivo quartz.properties
##===============================================================  
#    #Configure Main Scheduler Properties  
#    #===============================================================  
    org.quartz.scheduler.instanceName = QuartzScheduler  
    org.quartz.scheduler.instanceId = AUTO  
#  
#    #===============================================================  
#    #Configure ThreadPool  
#    #===============================================================  
     org.quartz.threadPool.threadCount =  3  
     org.quartz.threadPool.threadPriority = 5  
     org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool  
#  
#    #===============================================================  
#    #Configure JobStore  
#    #===============================================================  
   org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore  
#  
#    #===============================================================  
#    #Configure Plugins  
#    #===============================================================  
    org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin  
    org.quartz.plugin.jobInitializer.scanInterval = 10  
    org.quartz.plugin.jobInitializer.validating=false  
	org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml
	org.quartz.plugin.jobInitializer.failOnFileNotFound = false
arquivo quartz-config.xml
<?xml version="1.0" encoding="UTF-8"?>
<quartz xmlns="http://www.opensymphony.com/quartz/JobSchedulingData" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" overwrite-existing-jobs="true">
<schedule>
	<job>
		<name>Agendamento</name>
		<group>AgendamentoGroup</group>
		<description>Verifica se existe email pendente para envio</description>
		<job-class>com.suporte.agendamento.impl.AgendamentoTarefasImpl</job-class>
	</job>
	
		<trigger>
			<cron>
				<name>EmailTrigger</name>
				<group>AgendamentoGroup</group>
				<job-name>Agendamento</job-name>
				<job-group>AgendamentoGroup</job-group>
				<cron-expression>0/20 * * * * ?</cron-expression>
				<!-- Essa cron será executada a cada 10 minutos Referência para cron-expression: 
					http://en.wikipedia.org/wiki/CRON_expression -->
			</cron>
		</trigger>

</schedule>
</quartz>
classe da ação do schedule
package com.suporte.agendamento.impl;

import java.text.ParseException;
import java.util.ArrayList;
import java.util.List;

import org.quartz.CronTrigger;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.impl.StdSchedulerFactory;

import com.suporte.dao.EmailDao;
import com.suporte.dao.impl.EmailDaoImpl;
import com.suporte.model.Email;
import com.suporte.util.CalculaTempoUtil;

public class AgendamentoTarefasImpl implements Job{

	public void execute(JobExecutionContext jec) {
		
	try{	
		System.out.println("veio");
		CalculaTempoUtil ct = new CalculaTempoUtil();
		EmailDao dao = new EmailDaoImpl();
	
		List<Email> emails = new ArrayList<Email>();
		List<Email> emailsSeremExlcuidos = new ArrayList<Email>();
		List<Email> emailsSeremEnviados = new ArrayList<Email>();
		List<Integer> tempoEmail = ct.retornaTempoEmail();
		
		emails = dao.listarEmailNaoEnviado();
		
		for(int i = 0; i<emails.size(); i++)
		{
			if(tempoEmail.get(i) >= 2 )
			{	
				//Se for maior que dois dias o email será excluído
				emailsSeremExlcuidos.add(emails.get(i));
			}
			
			else
			{
				//Se for menor que dois dias o email será reenviado
				emailsSeremEnviados.add(emails.get(i));
			}	
		}
		
		if(emailsSeremExlcuidos != null){
			dao.excluirEmail(emailsSeremExlcuidos);
		}
	}catch(Exception e)
	{
		e.getMessage();
	}
	}
	
}
[code]

mapeamento web.xml
[code]
<context-param>  
        <param-name>config-file</param-name>  
    	<param-value>quartz.properties</param-value>
    </context-param>

O problema é que quando eu "starto" a aplicação web (apache tomcat 7), o schedule não funciona, na verdade nem inicia.
O que pode ser?

7 Respostas

A

cara,

vc nao indicou nada para que ele possa start, vc vai ter que criar um listener de context e colocar para iniciar la dentro.

t+

H

alissonvla:
cara,

vc nao indicou nada para que ele possa start, vc vai ter que criar um listener de context e colocar para iniciar la dentro.

t+


Apenas o quartz-config.xml não é suficiente?

Em qual pasta você colocou seu quartz-config.xml ?

J

Dentro de WEB-INF

A

cara,

da uma olhada nesse link, http://www.openscope.net/2010/02/05/quartz-scheduled-jobs/

e ve se te ajuda.

t+

H

jonatex:
Dentro de WEB-INF

Eu não acho que você está colocando na pasta correta. No caso do JBoss você precisa colocar na pasta server/default/conf.

Qual servidor vc está utilizando?

obs.: pelo menos no meu serviço é assim que funciona. [=

J

Estou utilizando apache tomcat 7

H

E oq o google te falou sobre qual pasta colocar o arquivo do quartz?

Criado 14 de novembro de 2011
Ultima resposta 15 de nov. de 2011
Respostas 7
Participantes 3