Fala galera blz?
Possuo um projeto JSF2 + JBOSS + Postgresql com persitência feita através de JNDI, funciona tudo corretamente. Porém surgiu a necessidade de montar um “cron” para verificar certas atividades no BD, bom, coloquei o quartz para rodar…funciona corretamente.
O problema está na hora que a minha classe de “agendamento” é executa e assim executa o DAO, ele não consegue dar lookup no JNDI, muito bizarro…
Procurei na net e vi prob. semelhantes mais sem solução.
quartz.properties:
org.quartz.scheduler.instanceName = MyScheduler
org.quartz.threadPool.threadCount = 3
org.quartz.jobStore.class = org.quartz.simpl.RAMJobStore
org.quartz.plugin.jobInitializer.class =org.quartz.plugins.xml.XMLSchedulingDataProcessorPlugin
org.quartz.plugin.jobInitializer.fileNames = quartz-config.xml
org.quartz.plugin.jobInitializer.failOnFileNotFound = true
org.quartz.scheduler.threadsInheritContextClassLoaderOfInitializingThread=true
quartz-config.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>AJob</name>
<group>AGroup</group>
<description>Print a welcome message</description>
<job-class>teste.SchedulerJob</job-class>
</job>
<trigger>
<cron>
<name>dummyTriggerName</name>
<job-name>AJob</job-name>
<job-group>AGroup</job-group>
<!-- It will run every 5 seconds -->
<cron-expression>0/5 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>
Classe de agendamento:
package teste;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import br.srv.dm.dao.PessoaTipoDAO;
import br.srv.dm.model.PessoaTipo;
public class SchedulerJob implements Job {
@Override
public void execute(JobExecutionContext context)
throws JobExecutionException {
PessoaTipoDAO pessoaTipoDAO = new PessoaTipoDAO();
for(PessoaTipo p : pessoaTipoDAO.listAll()) {
System.out.println("--> " + p.getDescricao());
}
}
}
Erro:
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) javax.naming.NameNotFoundException: java:comp/env/nomeDaUnit
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at org.jboss.as.naming.InitialContext.lookup(InitialContext.java:121)
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at org.jboss.as.naming.NamingContext.lookup(NamingContext.java:214)
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at javax.naming.InitialContext.lookup(Unknown Source)
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at br.srv.dm.conn.Connection.getEntityManager(Connection.java:46)
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at br.srv.dm.conn.MyTransaction.getEntityManager(MyTransaction.java:52)
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at br.srv.dm.conn.MyTransaction.getCriteriaSession(MyTransaction.java:58)
17:26:35,017 ERROR [stderr] (MyScheduler_Worker-1) at br.srv.dm.dao.PessoaTipoDAO.listAll(PessoaTipoDAO.java:23)
17:26:35,033 ERROR [stderr] (MyScheduler_Worker-1) at teste.SchedulerJob.execute(SchedulerJob.java:17)
17:26:35,033 ERROR [stderr] (MyScheduler_Worker-1) at org.quartz.core.JobRunShell.run(JobRunShell.java:213)
17:26:35,033 ERROR [stderr] (MyScheduler_Worker-1) at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557)
17:26:35,033 INFO [stdout] (MyScheduler_Worker-1) [ br.srv.dm.dao.PessoaTipoDAO ][listAll()]: null
17:26:35,033 ERROR [org.quartz.core.JobRunShell] (MyScheduler_Worker-1) Job AGroup.AJob threw an unhandled Exception: : java.lang.NullPointerException
at teste.SchedulerJob.execute(SchedulerJob.java:17) [classes:]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-2.1.5.jar:]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) [quartz-2.1.5.jar:]
17:26:35,033 ERROR [org.quartz.core.ErrorLogger] (MyScheduler_Worker-1) Job (AGroup.AJob threw an exception.: org.quartz.SchedulerException: Job threw an unhandled exception. [See nested exception: java.lang.NullPointerException]
at org.quartz.core.JobRunShell.run(JobRunShell.java:224) [quartz-2.1.5.jar:]
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:557) [quartz-2.1.5.jar:]
Caused by: java.lang.NullPointerException
at teste.SchedulerJob.execute(SchedulerJob.java:17) [classes:]
at org.quartz.core.JobRunShell.run(JobRunShell.java:213) [quartz-2.1.5.jar:]
... 1 more