Me gustaría saber cómo puedo usar la inyección en mi trabajo usando guice. Como no puedo usar @Inject en el constructor predeterminado, ¿puedo usarlo directamente en el atributo de la siguiente manera (siempre obtuve una NullPointerException con PersonDAO)? Sé que un DAO no tiene nada que hacer aquí, pero es solo para probar.Inyección en mi trabajo de cuarzo
public class SimpleQuartzJob implements Job {
@Inject PersonDao Person;
private static Logger logger = Logger.getLogger(SimpleQuartzJob.class.getName());
public SimpleQuartzJob() {
}
@Override
public void execute(JobExecutionContext context) throws JobExecutionException {
if (logger.isDebugEnabled()) logger.debug("In SimpleQuartzJob - executing its JOB at "
+ new Date() + " by " + context.getTrigger().getName());
// ... LOGIC ...
}
}
En mi módulo Tengo la siguiente declaración:
bind(PersonDao.class).to(HibernatePersonDaoImpl.class);
hecho uso el PersonDao aquí porque sé que funciona dentro de otra clase con la inyección (pero la inyección se realiza en el nivel de constructor ahí).
¿Puede alguien darme un consejo?
Aquí hay más información sobre el cuarzo config:
web.xml:
<servlet>
<servlet-name>QuartzInitializer</servlet-name>
<display-name>Quartz Initializer Servlet</display-name>
<servlet-class>org.quartz.ee.servlet.QuartzInitializerServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<init-param>
<param-name>config-file</param-name>
<param-value>/quartz.properties</param-value>
</init-param>
<init-param>
<param-name>shutdown-on-unload</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>start-scheduler-on-load</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
quartz.properties:
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.threadPool.class = org.quartz.simpl.SimpleThreadPool
org.quartz.threadPool.threadCount = 5
org.quartz.threadPool.threadPriority = 5
de cuarzo-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>mail-job</name>
<group>MYJOB_GROUP</group>
<description>The job description</description>
<job-class>svc.data.server.quartz.SimpleQuartzJob</job-class>
</job>
<trigger>
<cron>
<name>my-trigger</name>
<group>MYTRIGGER_GROUP</group>
<job-name>mail-job</job-name>
<job-group>MYJOB_GROUP</job-group>
<cron-expression>10 * * * * ?</cron-expression>
</cron>
</trigger>
</schedule>
</job-scheduling-data>