Boa tarde, Gostaria de saber como posso fazer o CDI gerenciar um job do Quartz.
Boa tarde, Gostaria de saber como posso fazer o CDI gerenciar um job do Quartz.
Fala aí Avelino, blz?
O que você quer dizer com "gerenciar um job do Quartz"?
Quartz Job Scheduling Library (http://www.quartz-scheduler.org/)
Para que o CDI funcione, ele precisa gerenciar toda a cadeia de criação dos Beans para que possa injetar as instâncias corretas nos beans. Mas quando criamos um Job no Quarz usando JobBuilder.newJob(MyJob).build()o JobBuilder está criando instâncias de trabalho que o CDI não sabe nada sobre e, portanto, nunca tem a chance de injetar um DAO ou um Serviço.
Então, como podemos dizer ao agendador Quarz que ele não deve criar a instância do bean em si, mas, delegar a criação da instância do bean para o CDI?
No momento. Para contornar o problema. Estou recuperando os DAO ou Serviços com:
initialContext = new InitialContext();
bean = (BeanManager) initialContext.lookup("java:comp/env/BeanManager");
Não conheço muito do Quartz, mas uma solução seria você produzir os jobs via @Produces
.
E com isso você pode injetar os jobs em outras classes ou criar um Job e injetar nele alguma coisa do seu projeto.