3
respostas

Como usar CDI + Quartz ?

Boa tarde, Gostaria de saber como posso fazer o CDI gerenciar um job do Quartz.

3 respostas

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.