Boa tarde pessoal,
Já faz um bom tempo que não tenho programado e portanto a minha questão pode parecer ser um pouco básica para muitos de vocês. De qualquer forma, vamos lá:
Estou criando um App para ServiceDesk na empresa onde trabalho usando JSF 2.0 + Primefaces + Eclipelink etc. O Aplicativo está praticamente pronto e resta apenas uma entrega que eu gostaria de implementar. Esta entrega é o envio de E-MAILS diários para alguns chamados que estão abertos a mais de x dias. Para isso, pesquisando , descobri há pouco a LIB Quartz.
Segui a documentação da LIB , mas ainda assim, ao iniciar o servidor TOMCAT , recebo a seguinte mensagem de erro:
org.quartz.SchedulerException: Properties file: ‘quartz.properties’ could not be read. [See nested exception: java.io.FileNotFoundException: quartz.properties (O sistema não pode encontrar o arquivo especificado)]
Vou compartilhar todos os meus arquivos para que vocês possam ver como está a minha estrutura:
WEB.XML
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd">
<context-param>
<param-name>javax.faces.PROJECT_STAGE</param-name>
<param-value>Production</param-value>
</context-param>
<context-param>
<param-name>primefaces.THEME</param-name>
<param-value>bluesky</param-value>
</context-param>
<servlet>
<servlet-name>Faces Servlet</servlet-name>
<servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Faces Servlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>
15
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>faces/index.xhtml</welcome-file>
</welcome-file-list>
<context-param>
<param-name>quartz:config-file</param-name>
<param-value>quartz.properties</param-value>
</context-param>
<context-param>
<param-name>quartz:shutdown-on-unload</param-name>
<param-value>true</param-value>
</context-param>
<context-param>
<param-name>quartz:wait-on-shutdown</param-name>
<param-value>false</param-value>
</context-param>
<context-param>
<param-name>quartz:start-scheduler-on-load</param-name>
<param-value>true</param-value>
</context-param>
<listener>
<listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class>
</listener>
</web-app>
QUARTZ PROPERTIES
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTO
org.quartz.threadPool.threadCount = 3
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = false
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.validating=false
org.quartz.plugin.jobInitializer.fileName =quartz-jobs.xml
QUARTZ-JOBS.xml
<?xml version="1.0" encoding="UTF-8"?>
<job-scheduling-data
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData
http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd"
version="1.8">
<schedule>
<job>
<name>JobEncerraChamados</name>
<group>Grupo01</group>
<description>Job para encerramento de chamados</description>
<job-class>Jobs.JobEncerraChamados</job-class>
</job>
<trigger>
<cron>
<name>TriggerEncerraChamado</name>
<job-name>JobEncerraChamados</job-name>
<job-group>Grupo01</job-group>
<cron-expression>0/10 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
Estrutura
ServiceDesk
- Páginas WEB
- WEB-INF
- quartz-jobs.xml
- quartz.properties
- faces-config.xml
- web.xml
- Minhas Paginas
- etc…
- WEB-INF
Classe Java:
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package Jobs;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
/**
*
* @author lucas.blanco
*/
public class JobEncerraChamados implements Job{
/**
* Metodo que é executado quando a tarefa é invocada
* @throws org.quartz.JobExecutionException
*/
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
System.out.println("Roda meu filho...");
}
}
Já fiz varias análises , revisão de código e cai realizando várias tentativas. Já coloquei o arquivo QUARTZ.PROPERTIES e em todas as tentativas o erro é o mesmo. Onde estou errando ?
Muito obrigado pessoal !!!
Boa tarde pessoal,Já faz um bom tempo que não tenho programado e portanto a minha questão pode parecer ser um pouco básica para muitos de vocês. De qualquer forma, vamos lá:
Estou criando um App para ServiceDesk na empresa onde trabalho usando JSF 2.0 + Primefaces + Eclipelink etc. O Aplicativo está praticamente pronto e resta apenas uma entrega que eu gostaria de implementar. Esta entrega é o envio de E-MAILS diários para alguns chamados que estão abertos a mais de x dias. Para isso, pesquisando , descobri há pouco a LIB Quartz.
Segui a documentação da LIB , mas ainda assim, ao iniciar o servidor TOMCAT , recebo a seguinte mensagem de erro:
org.quartz.SchedulerException: Properties file: ‘quartz.properties’ could not be read. [See nested exception: java.io.FileNotFoundException: quartz.properties (O sistema não pode encontrar o arquivo especificado)]
Vou compartilhar todos os meus arquivos para que vocês possam ver como está a minha estrutura:
WEB.XML
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Production</param-value> </context-param> <context-param> <param-name>primefaces.THEME</param-name> <param-value>bluesky</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout> 15 </session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> <context-param> <param-name>quartz:config-file</param-name> <param-value>quartz.properties</param-value> </context-param> <context-param> <param-name>quartz:shutdown-on-unload</param-name> <param-value>true</param-value> </context-param> <context-param> <param-name>quartz:wait-on-shutdown</param-name> <param-value>false</param-value> </context-param> <context-param> <param-name>quartz:start-scheduler-on-load</param-name> <param-value>true</param-value> </context-param> <listener> <listener-class>org.quartz.ee.servlet.QuartzInitializerListener</listener-class> </listener> </web-app>QUARTZ PROPERTIES
org.quartz.scheduler.instanceName = QuartzScheduler
org.quartz.scheduler.instanceId = AUTOorg.quartz.threadPool.threadCount = 3
org.quartz.threadPool.threadPriority = 5
org.quartz.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStoreorg.quartz.plugin.jobInitializer.class = org.quartz.plugins.xml.JobInitializationPlugin
org.quartz.plugin.jobInitializer.overWriteExistingJobs = true
org.quartz.plugin.jobInitializer.failOnFileNotFound = false
org.quartz.plugin.jobInitializer.scanInterval = 10
org.quartz.plugin.jobInitializer.validating=false
org.quartz.plugin.jobInitializer.fileName =quartz-jobs.xmlQUARTZ-JOBS.xml
<?xml version="1.0" encoding="UTF-8"?> <job-scheduling-data xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.quartz-scheduler.org/xml/JobSchedulingData http://www.quartz-scheduler.org/xml/job_scheduling_data_1_8.xsd" version="1.8"> <schedule> <job> <name>JobEncerraChamados</name> <group>Grupo01</group> <description>Job para encerramento de chamados</description> <job-class>Jobs.JobEncerraChamados</job-class> </job> <trigger> <cron> <name>TriggerEncerraChamado</name> <job-name>JobEncerraChamados</job-name> <job-group>Grupo01</job-group> <cron-expression>0/10 * * * * ?</cron-expression> </cron> </trigger> </schedule> </job-scheduling-data>Estrutura
ServiceDesk
- Páginas WEB
- WEB-INF
- quartz-jobs.xml
- quartz.properties
- faces-config.xml
- web.xml
- Minhas Paginas
- etc…
Classe Java:
/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package Jobs; import java.text.SimpleDateFormat; import java.util.Date; import org.quartz.Job; import org.quartz.JobExecutionContext; import org.quartz.JobExecutionException; /** * * @author lucas.blanco */ public class JobEncerraChamados implements Job{ /** * Metodo que é executado quando a tarefa é invocada * @throws org.quartz.JobExecutionException */ @Override public void execute(JobExecutionContext context) throws JobExecutionException { System.out.println("Roda meu filho..."); } }


